Custom validatie regel in Laravel

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Java developer met testervaring

Java developer met testervaring Functieomschrijving "De drempel tussen de burger en de Belastingdienst zo laag mogelijk houden: dat is de belangrijke taak van ons team. Dit doen we door het burgerportaal Mijn Belastingdienst continu te verbeteren." René, Java-specialist bij de Belastingdienst. De keten Interactie is een samenwerkingsverband van alle dienstonderdelen binnen de Belastingdienst. Samen zorgen we dat het contact met burgers en bedrijven goed kan plaatsvinden. Onze belangrijkste opgave? Zoveel mogelijk digitaliseren. Dat doen we binnen het onderdeel Informatievoorzieningen (IV), de ICT-organisatie van de Belastingdienst. Denk bij de producten die IV-Interactie ontwikkelt en onderhoudt aan portalen, formulieren en authenticatie- en

Bekijk vacature »

Full Stack Developer Industriële Automatiseri

Raster wordt continu betrokken bij complexe en baanbrekende projecten in industriële automatisering. Ons team is gespecialiseerd in productie automatisering en proces automatisering projecten waarin procesveiligheid een belangrijk aspect is. Ons compact en groeiend OX (Operational Excellence) team ontwikkelt, configureert en levert support op zelfontwikkelde applicaties waarmee onze klanten hun productieprocessen slimmer, sneller, goedkoper en veiliger maken. Operational Excellence wordt zichtbaar gemaakt in resultaten. Bij bedrijven met dezelfde strategie, zal een operationeel excellent bedrijf een lager operationeel risico, lagere operationele kosten hebben en relatief meer winst maken. Het Raster OX team laat haar klanten de resultaten behalen door hun eigen procesdata

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.