2016-09-15 10 views
6

私はLaravel 5.3を使用しています、これは以下のフォームのデモです:Laravelにチェックボックスの古いデータを表示する方法は?

<div class="container"> 
    <form> 
     <div class="form-group row"> 
      <label for="name" class="col-sm-2 col-form-label">Name</label> 
      <div class="col-sm-10"> 
       <input type="text" class="form-control" id="name" name="name" value="{{ old('name', $student->name)}}"> 
      </div> 
     </div> 

     <fieldset class="form-group row"> 
      <legend class="col-form-legend col-sm-2">Gender</legend> 
      <div class="col-sm-10"> 
       <div class="form-check"> 
        <label class="form-check-label"> 
         <input class="form-check-input" type="radio" name="gender" value="1" @if(old('gender',$student->gender)=="1") checked @endif> 
         Male 
        </label> 
       </div> 
       <div class="form-check"> 
        <label class="form-check-label"> 
         <input class="form-check-input" type="radio" name="gender" value="2" @if(old('gender',$student->gender)=="2") checked @endif> 
         Female 
        </label> 
       </div> 
      </div> 
     </fieldset> 
     <div class="form-group row"> 
      <label class="col-sm-2">Hobbies</label> 
      <div class="col-sm-10"> 
       <div class="form-check"> 
        <label class="form-check-inline"> 
         <input class="form-check-input" type="checkbox" name="hobby[]" value="1" @if(...) checked @endif> football 
        </label> 
        <label class="form-check-inline"> 
         <input class="form-check-input" type="checkbox" name="hobby[]" value="2" @if(...) checked @endif> basketball 
        </label> 
        <label class="form-check-inline"> 
         <input class="form-check-input" type="checkbox" name="hobby[]" value="3" @if(...) checked @endif> swimming 
        </label> 
       </div> 

      </div> 
     </div> 
     <div class="form-group row"> 
      <div class="offset-sm-2 col-sm-10"> 
       <button type="submit" class="btn btn-primary">Submit</button> 
      </div> 
     </div> 
    </form> 
</div> 

私の質問は:

私はこのようなinput type="text"に古いデータを表示することができます。

<input type="text" class="form-control" id="name" name="name" value="{{ old('name', $student->name)}}"> 

そして、私はinput type="radio"の古いデータを次のように表示できます:

<input class="form-check-input" type="radio" name="gender" value="1" @if(old('gender',$student->gender)=="1") checked @endif> 

しかし、私はinput type="checkbox"に古いデータを表示する方法がわからない:

<input class="form-check-input" type="checkbox" name="hobby[]" value="3" @if(...) checked @endif> 

はどのようにそれを行うには?

+2

それは... 'in_array()'メソッド – Blake

+0

http://laravel.io/forum/10-31-2014-array-to-fill-a-checkbox –

答えて

22

これは動作します:が提案

また
 <div class="form-check"> 
      <label class="form-check-inline"> 
       <input class="form-check-input" type="checkbox" name="hobby[]" value="1" @if(is_array(old('hobby')) && in_array(1, old('hobby'))) checked @endif> football 
      </label> 
      <label class="form-check-inline"> 
       <input class="form-check-input" type="checkbox" name="hobby[]" value="2" @if(is_array(old('hobby')) && in_array(2, old('hobby'))) checked @endif> basketball 
      </label> 
      <label class="form-check-inline"> 
       <input class="form-check-input" type="checkbox" name="hobby[]" value="3" @if(is_array(old('hobby')) && in_array(3, old('hobby'))) checked @endif> swimming 
      </label> 
     </div> 

brokekidweb として:

<label class="form-check-inline"> 
    <input class="form-check-input" type="checkbox" name="hobby[]" value="1" {{ (is_array(old('hobby')) and in_array(1, old('hobby'))) ? ' checked' : '' }}> football 
</label> 

OR

<label class="form-check-inline"> 
    <input class="form-check-input" type="checkbox" name="hobby[]" value="1" {{ (is_array(old('hobby')) && in_array(1, old('hobby'))) ? ' checked' : '' }}> football 
</label> 
+2

必要性を考える配列です()は、パラメータ2が配列、nullが指定されていると期待しています>> –

+0

答えを更新しました。ありがとう@GF –

+1

あなたはできますか? Bladeではまた、3進演算子 '{{(is_array(old( 'hobby'))とin_array(1、old( 'hobby')) **と**の代わりに**と**あなたの答えは書かれているように動作します。 – brokekidweb

4

あなたは

<input class="form-check-input" type="checkbox" name="hobby[]" value="3" @if(in_array(3, old('hobby'))) checked @endif> 

を使用することができますそれとも、ただ https://laravelcollective.com/docs/5.3/html#checkboxes-and-radio-buttons

集団Laravelを使用して、代わりにこのようなコードを持つように切り替えることができます:

{!! Form::checkbox('name', 'value', true) !!} 
3

第一WAY

まず変数

$hob = old('hobby');

とチェックが配列かどうか

echo is_array($hob) ? (in_array(1, $hob)?'checked':NULL) : NULL;

あるし、それを適用するよりもを作成します。

<input class="form-check-input" type="checkbox" name="hobby[]" value="1" <?php echo is_array($hob) ? (in_array(1, $hob)?'checked':NULL) : NULL; ?>> football

第二WAY

ORあなたがそれを行うことができますが、この場合には、変数

@if(is_array(old('hobby')) && in_array(1,old('hobby'))) checked @endif

を作成し、それを適用されません。

<input class="form-check-input" type="checkbox" name="hobby[]" value="1" @if(is_array(old('hobby')) && in_array(1,old('hobby'))) checked @endif > football

+0

これは、チェックボックスが選択されていないと、配列が作成されないので、エラーが発生するので、受け入れられた答えよりもうまく機能します。** in_array()は、 – Adocad

関連する問題