2016-08-05 5 views
1

Ich habe eine Tabelle mit Kontrollkästchen als Array und Textbox als auch Array. Was ich erreichen möchte, ist, wenn der Benutzer eine Checkbox aktiviert hat, sollte er validieren, dass die Eingabetextbox nicht leer ist.Validierung mit required_with in Laravel für Input-Feld als Array?

 
public function roombooking(Request $request) 
    { 


     $messsages = array(
     'check.required'=>'No room was selected.Please select room to proceed for booking !', 
     'txtnos.required|numeric'=>'Please enter no of persons', 
    ); 
     $rules = array(
     'check'=>'required', 
     'txtnos'=>'required_with:data', //txtnos is a array input filed and data is a array checkbox 
     ); 
     $validator = Validator::make($request->all(), $rules,$messsages 
      ); 
     if ($validator->fails()) { 

      return Redirect::back() 
       ->withErrors($validator) 
       ->withinput(); 

     } 
} 

Html-Code

 


         
 
<table class="table table-hover" data-toggle="table" id="table" 
 
data-click-to-select="true"> 
 
    <thead> 
 
     <tr> 
 
      <th style="width:10%;" data-field="ActivityId">Select</th> 
 
      <th style="width:30%;" data-field="ActivityName">Activity Name</th> 
 
      <th style="width:30%;" data-field="Rate">Rate/Person</th> 
 
      <th style="width:30%;">Nos. of person</th> 
 
     </tr> 
 
    </thead> 
 
    <tbody>     
 
      @foreach($loadactivity as $key=>$activity) 
 
      <tr> 
 
       <td> 
 
        <input type="checkbox" name="data[]" value="0;{!! $activity->ActivityId !!};{!! $activity->Rate !!};0;0;{!! $activity->ActivityName !!}" /> 
 
       </td> 
 
       <td>{!! $activity->ActivityName !!}</td> 
 
       <td>{!! $activity->Rate !!}</td> 
 
       <td >{!! Form::text('txtnos[]','',['class' => 'form-control small-textbox ','txtnoid'=>$activity->ActivityId]) !!}</td> 
 
      </tr> 
 
      @endforeach 
 
    
 
    </tbody> 
 
</table>

bitte helfen Sie mir

+0

Bitte geben Sie den HTML-Code für das Formular – SebHallin

Antwort

1

Ihre Form ändern:

... 
<td><input type="checkbox" name="row[{{$key}}][data]" value="0;{!! $activity->ActivityId !!};{!! $activity->Rate !!};0;0;{!! $activity->ActivityName !!}" /> 
</td> 
<td>{!! $activity->ActivityName !!}</td> 
<td>{!! $activity->Rate !!}</td> 
<td>{!! Form::text('row[{{$key}}][txtnos]','',['class' => 'form-control small-textbox ','txtnoid'=>$activity->ActivityId]) !!}</td> 
... 

Also das einzige, was sich geändert hat ist der Name von Daten und txtnos, es wird Ihnen folgendes geben:

$exampleResult = [ 
    'row' => [ 
     // old $key as new key 
     0 => [ 
      'txtnos' => 'entered value', 
      'data' => '1', // But only if checked 
     ], 
     1 => [ 
      'txtnos' => 'entered value', 
      'data' => '1', // But only if checked 
     ], 
    ] 
]; 

Validierungsregeln

$rules = [ 
    'row.*.txtnos' => 'required_with:row.*.data' 
]; 

Im Beispiel txtnos auf jeder Zeile, wenn data auf der gleichen Zeile isset erforderlich ist.

Validation Nachricht

$messages = [ 
    'row.*.txtnos.required_with' => 'Enter a value or uncheck the checkbox..' 
]; 

Wichtig:
Die Validierung für .*. in Laravel hinzugefügt wurde 5.2, Sie nicht Ihre genaue Version angegeben haben, so bin ich nicht sicher, ob es für funktioniert Sie. Jedenfalls gibt es einen anderen Weg, dies zu tun.

Für Versionen < 5.2, Schleife die Eingangszeilen und ersetzen Sie das * in meinem Beispiel mit dem aktuellen Schlüssel.

+0

Ich habe meine Frage mit HTML-Code aktualisieren. Bitte überprüfen Sie und sagen Sie mir, wie Sie die Regeln festlegen –

+0

Es funktioniert !!!! Vielen Dank –

+0

Gut zu hören. Bitte "[akzeptiere die Antwort] (http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work)", um _Danke_ zu sagen. – SebHallin