Custom validatie regel in Laravel

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Senior .NET Back-end Developer in ons innovation t

Bedrijfsomschrijving Namens één van mijn betere klanten, gevestigd in de omgeving van Amstelveen, ben ik op zoek naar een ervaren Senior Back-end Developer met minimaal vier jaar werkervaring. Je komt terecht in een echte developmentorganisatie, waarbinnen momenteel ruim 40 enthousiaste mannen en vrouwen dagelijks werken aan de ontwikkeling van complexe applicaties, die veelal webbased zijn. Deze applicaties worden gebruikt door zowel grote als kleine organisaties in zowel binnen- als buitenland en zijn bedoeld om bedrijven te ondersteunen in alles wat te maken heeft met financiën. Zo levert deze organisatie standaard- en maatwerkapplicaties waarbinnen bedrijven bijvoorbeeld al hun zaken omtrent salarishuishouding

Bekijk vacature »

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.