Custom validatie regel in Laravel

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Senior Java Developer Onderzoeksinstituut Architec

Bedrijfsomschrijving Als Senior Java Developer kom je te werken bij een internationaal gerenommeerd onderzoeksinstituut. Dagelijks is dit instituut verantwoordelijk voor de juiste samenwerking, toegankelijkheid en communicatie voor circa 9000 interne gebruikers. In een team van elf ontwikkelaars ben je als Senior Java Developer verantwoordelijk voor het ontwikkelen van functionele ontwerpen naar technische oplossingen. Deze projecten bestaan o.a. projecten zoals het implementeren van Elastic Search en het koppelen van CMS. Ook fungeer je als vraagbaak voor je collega’s op het gebied van backend softwareontwikkeling. Daarnaast denk je graag mee op het gebied van architectuur qua mogelijke oplossingen en innovatie. Momenteel zijn

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.