Custom validatie regel in Laravel

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Jorn Reed

Jorn Reed

12/09/2020 18:22:04
Quote Anchor link
Hallo,

Ik ben bezig met een Laravel project. Aangezien Laravel geen out of the box composite key validatie heeft, wat echt doet wat je wilt. Moet je zelf een custom validatie regel schrijven. Ik wil namelijk dat als je een post_translation toevoegd, dat de combinatie van post_id en lang_id uniek is. Oftewel elke post kan maar 1x vertaald worden per taal die beschikbaar is.

Ik heb een custom form request bestand wat ik gebruik voor de validatie. Maar ik krijg die custom regel niet aan de praat.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
//storePostTranslation.php
public function rules()
    {
        return [
            'post_id' => ['exists:post_translations', Rule::unique('post_translations')->where(function ($query) {
                return $query->where('lang_id', $request->lang_Id)->where("post_id", $request->post_id);
            })],
            'lang_id' => 'required|exists:post_translations',
            'title' => 'required',
            'content' => 'required',
        ];
    }

//postTranslationController.php
public function store($post_id, StorePostTranslation $request)
    {
        $data = $request->validated();
        $post = Post::find($post_id);
    
        $post->translations()->create($data);
    }


Als iemand hier raad mee weet, dankjewel!

Toevoeging op 12/09/2020 19:39:05:

Update:

Ik heb de validatie regel een beejte aangepast, aan waarvan ik dacht dat zal wel werken.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
public function rules (Request $request)
    {
        return [
            'lang_id' => ['required', Rule::unique('post_translations')->where(function ($query) {
                return $query->where('post_id', 1);
            })],
            'title' => 'required',
            'content' => 'required',
        ];
    }


maar krijg nu bij elke toevoeging, of de taal nou al wel of niet gebruikt is voor een translation, "Lang id is already in use"
 
Er zijn nog geen reacties op dit bericht.



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.