6

何人かのLaravelの人が助けてくれるかどうか疑問に思っていました.

フォームが送信されるとバリデーターを通過し、バリデーターが失敗するとフォームに戻り、フィールドに入力を入力し、エラーメッセージを表示する、2 つのラジオボタンがあるフォームがあります。

ラジオボタンに対してこれを行うことはできません。フォームが送信されたときにクリックされてエラーが発生した場合、チェックされたラジオボタンが空になったことを除いて、すべてが記入された状態でフォームに戻ります。

私のラジオボタンは次のとおりです。

<input type="radio" name="genre" value="M" class="radio" id="male" />
<input type="radio" name="genre" value="F" class="radio" id="female" />
<span class="error">{{ $errors->first('genre') }}</span>

どんな助けでも大歓迎です。

4

7 に答える 7

19

これは、Laravel のすぐに使えるHTML ラジオを使用して試すことができます... Laravel Docs フォームのチェックボックスとラジオ

ブレードを使用し、

{{ Form::radio('genre', 'M', (Input::old('genre') == 'M'), array('id'=>'male', 'class'=>'radio')) }}
{{ Form::radio('genre', 'F', (Input::old('genre') == 'F'), array('id'=>'female', 'class'=>'radio')) }}

または単にphp、

echo Form::radio('genre', 'M', (Input::old('genre') == 'M'), array('id'=>'male', 'class'=>'radio'));
echo Form::radio('genre', 'F', (Input::old('genre') == 'F'), array('id'=>'female', 'class'=>'radio'));
于 2013-06-12T08:05:44.020 に答える
12

あなたはこれを行うことができます:

<input type="radio" name="genre" value="M" class="radio" id="male" <?php if(Input::old('genre')== "M") { echo 'checked="checked"'; } ?> >
<input type="radio" name="genre" value="F" class="radio" id="female" <?php if(Input::old('genre')== "F") { echo 'checked="checked"; } ?> >
于 2013-06-12T07:53:13.460 に答える
1

ブートストラップと自動チェックでの使用

ファイルの最後に次のコードを追加します: app/start/global.php

//...

Form::macro('radio2', function($group ='group-name', $value_model = 'value-model', $label ='label-radio', $value_radio = 'value-radio', $attrs = array())
{

  $item  = "<div class='radio'>";
  $item .=   "<label>";
  $item .=      Form::radio($group, $value_radio, ($value_model == $value_radio) ? true : false, $attrs);
  $item .=      $label;
  $item .=   "</label>";
  $item .= "</div>";

  return $item;
});

あなたのview.phpで

{{ Form::radio2('status', Input::old('status'), 'Online', '1', array()) }}
{{ Form::radio2('status', Input::old('status'), 'Offline', '0', array()) }}

最終結果:

ここに画像の説明を入力

于 2014-07-18T17:52:17.293 に答える
1

既知のバグ: - https://github.com/laravel/laravel/issues/2069 - https://github.com/laravel/framework/issues/1564

2 番目のリンクに一時的な解決策があります。

于 2013-06-12T08:02:46.960 に答える
1

私はこれに出くわしたばかりで、すべてのフォームでそのような条件を繰り返し続けたくないので、ヘルパー クラスに関数を作成しました。

Helper.php:

class Helper {

    // other functions

    public static function oldRadio($name, $value, $default = false) {
        if(empty($name) || empty($value) || !is_bool($default))
            return '';

        if(null !== Input::old($name)) {
            if(Input::old($name) == $value) {
                return 'checked';
            } else {
                return '';
            }
        } else {
            if($default) {
                return 'checked';
            } else {
                return '';
            }
        }

        // Or, short version:
        return null !== Input::old($name) ? (Input::old($name) == $value ? 'checked' : '') : ($default ? 'checked' : '');
    }
}

したがって、今のフォームでは、次のように使用します。

<label>Please select whatever you want</label>
<div class="radio-inline"><label><input type="radio" name="whatever" value="1" required {{ Helper::oldRadio('whatever', '1', true) }}> One</label></div>
<div class="radio-inline"><label><input type="radio" name="whatever" value="2" {{ Helper::oldRadio('whatever', '2') }}> Two</label></div>
<div class="radio-inline"><label><input type="radio" name="whatever" value="3" {{ Helper::oldRadio('whatever', '3') }}> Three</label></div>

各オプションはその名前と値をヘルパー関数に渡し、以前に選択されたものは「チェック済み」と出力されます。さらに、オプションは 3 番目のパラメーターとして「true」を渡すことができるため、古い入力がない場合に選択されます。

于 2014-03-21T16:13:32.787 に答える
0

Input::old() の代わりに Input::get() を単純に使用してみましたが、うまくいきました!!{{Form::radio('estado','V',(Input::get('estado')=="V"))}}

于 2015-02-16T06:20:47.310 に答える