2016-05-13 36 views
1

Wenn jemand ein Konto in der Anwendung erstellt, die ich erstelle, müssen sie ein Land angeben.Laravel 5.2 - Benutzerdefinierte Formularfeldname und Validierung

Um dem Benutzer eine Liste der Länder zur Auswahl zu geben, gibt es eine countries Tabelle mit zwei Feldern: id und country_code. Die users Tabelle hat ein country_id Feld.

Ich möchte ein Auswahlfeld mit dem Namen country anstelle von country_id verwenden, aber ich bin nicht in der Lage, herauszufinden, wie ich das erreichen würde. Irgendeine Idee? Natürlich müssen die Validierung und das Zeug noch funktionieren.

Ist es außerdem erforderlich, das genaue Feld für countries.id im Validierungscode anzugeben? Gerade jetzt, ich habe dies:

$this->validate($request, [ 
    'name' => 'required', 
    'country_id' => 'required|exists:countries,id' 
]); 

Wie gesagt, sollten die Attributnamen country statt country_id sein, aber da ich die Eloquent Beziehung zwischen dem Nutzer und dem Land Modell angegeben habe, so etwas wie 'required|exists:countries' tun sollte das tun Trick, oder?

Antwort

2
<select name="country"> 
    <option value="1">US</option> 
    <option value="2">UK</option> 
</select> 

und Validierung

$this->validate($request, [ 
    'country' => 'required|integer|exists:countries,id' 
]); 

country == name attribute countries == table name

So it will check the value from selected option(id) with existing id in countries table 

Wenn Land in Tabelle Ländern mit ausgewählten ID existiert Benutzer speichern

$user = New User; 
$user->country_id = $request->input('country'); 
$user->save(); 

Laravel Validierung bindet nicht Ihre Spalten in DB mit Ihren Eingaben Namen Ich würde auch hinzufügen integer Validierung vor exists

+0

Das war viel einfacher als ich erwartet hatte. Ich habe '$ request-> merge (['country_id' => $ request-> input ('country')]);' so kann ich '$ user-> create ($ request-> all());' verwenden . Vielen Dank! –

+0

@ Willem-Aart yeap)) Aber Vorsicht, Setup '$ bewacht oder $ ausfüllbare Array' von Spalten in Ihrem' Model' so füllen Sie nur Daten, die Sie mehr zu lesen zulassen https://laravel.com/docs/5.1/eloquente # Massenzuweisung – Froxz

Verwandte Themen