2016-05-03 25 views
1

Ich bin derzeit fest auf die Lösung dieses Problems. Ich bin neu in Laravel und dem MVC Framework. Ich habe Mühe, die dynamische Form zu erstellen, die dem Benutzer die Möglichkeit gibt, so viele Formulare wie möglich hinzuzufügen. Wenn der Benutzer die Seite zuerst eingibt, erzeugt er 5 Formularfelder. Hier ist ein Blick auf meinen Code bis jetzt.Formular-Array-Validierung Laravel 5.2

<div id ={{$id = "from".$i}} > 


    <div class="form-group col-md-6"> 


        <div class="col-md-6 form-group"> 

         <label for={{$id = "Address".$i}}>Address</label> 
         <input type="text" name = "address[{{$i}}]" class="form-control" id={{$id = "Address".$i}} placeholder="Street Address"> <!-- problem form array how does this work in laravel --> 


       </div> 


        <div class="form-group col-md-6"> 

         <label for={{$id = "city".$i}}>City</label> 
         <input type="text" value = "{{ old('city') }}" class="form-control" id={{$id = "City".$i}} placeholder="City"> 

          @if ($errors->has('city')) 
           <span class="help-block"> 
            <strong>{{ $errors->first('city') }}</strong> 
           </span> 
          @endif 
       </div> 

Wie würde ich von Array ein Formular in Laravel 5.2 mit Validierung gehe über

hier ist mein Controller

public function Postdata(Request $request) { 

      $this->validate($request->all(), [ 
       'address.*' => 'required|string', 
       'city' => 'required', 
        ]); 

       } 

ich ein for-Schleife bin mit den Formulare dynamisch zu generieren.

hier ist der Fehler, den ich

bekommen
 ErrorException in ValidatesRequests.php line 49: 
     Argument 1 passed to App\Http\Controllers\Controller::validate() must be     an instance of Illuminate\Http\Request, array given, called in   
    C:\wamp\www\Dynamic- 1.0\app\Http\Controllers\propContoller.php on line 34 and defined 

Kann jemand bitte helfen oder mich in der richtigen Richtung danke!

+0

Versuchen '$ request' statt' $ Anfrage- mit> alle() ' – Abbasi

+0

Auch ist es besser, Definieren Sie Validierungsregeln in Ihrer benutzerdefinierten Anfrage –

Antwort

1
  1. hinzufügen name="city[{{$i}}]"
  2. erstellen spezifische Anfrage mit php Handwerkern machen: anfordern PostRequest
  3. ändern public function Postdata(Request $request) {-public function Postdata(PostRequest $request) {
  4. den Validate-Funktionsaufruf von dem Controller
  5. Zur/app/Http/entfernen Anfragen/PostRequest.php
  6. Dann bearbeiten Sie die Regeln-Funktion zu so etwas wie ...

.

/** 
* Get the validation rules that apply to the request. 
* 
* @return array 
*/ 
public function rules() 
{ 
    $rules = []; 

    foreach($this->request->get() as $key => $val) 
    { 
     $rules['address.' . $key] = 'required'; 
     $rules['city.' . $key] = 'required'; 
    } 

    return $rules; 
} 
+0

Nur eine allgemeine Idee. Sehen Sie, ob das hilft. –

0

Danke Mann! das ist die Lösung, die ich mit

<div class="form-group col-md-6"> 


        <div class="col-md-6 form-group"> 

         <label for={{$id = "Address".$i}}>Address</label> 
         <input type="text" name="address[{{$i}}]" class="form-control" id={{$id = "Address".$i}} placeholder="Street Address"> 


       </div> 

in Post-Anforderung das ich habe am Ende

public function authorize() 
{ 
    return true; 
} 

     /** 
     * Get the validation rules that apply to the request. 
     * 
     * @return array 
     */ 

    public function rules() { 

    $rules = []; 

     foreach($this->request->get('address') as $key => $val) { 

     $rules['address.'.$key] = 'required'; 

     } 

     return $rules; 
     }