Laravel 4 - 输入::旧的单选按钮

时间:2013-06-12 06:48:30

标签: laravel laravel-4

我想知道一些Laravel家伙是否可以提供帮助。

我有一个表单,其中我有2个单选按钮,当表单提交它通过验证器时,如果验证器失败它返回到表单,填充输入字段并显示错误消息。

我似乎无法为单选按钮执行此操作,如果在提交表单时单击了一个并且出现错误,则会返回到表单中并填写所有内容除了已选中的单选按钮现在为空。< / p>

我的单选按钮如下:

<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>

非常感谢任何帮助。

7 个答案:

答案 0 :(得分:19)

你可以使用Laravel开箱即用的HTML收音机试试这个... Laravel Docs Form checkboxes and Radio

使用刀片,

{{ 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'));

答案 1 :(得分: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"; } ?> >

答案 2 :(得分:1)

该错误已知: - https://github.com/laravel/laravel/issues/2069 - https://github.com/laravel/framework/issues/1564

您在第二个链接中有一个临时解决方案。

答案 3 :(得分:1)

我偶然发现了这一点,我不想在每个表单上重复这些条件,所以我在Helper类上创建了一个函数。

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>

每个选项都将其名称和值传递给辅助函数,之前选择的选项将打印“已检查”。此外,一个选项可以传递'true'作为第三个参数,因此如果没有旧输入,它将被选中。

答案 4 :(得分:1)

使用Bootstrap&amp;自动检查

在文件末尾添加此代码: 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()) }}

最终结果:

enter image description here

答案 5 :(得分:0)

我尝试过简单地使用Input :: get()而不是Input :: old()....并且它工作正常!! {{Form::radio('estado','V',(Input::get('estado')=="V"))}}

答案 6 :(得分:0)

我的方法是使用刀片语法嵌套的简写if / else语句。该解决方案还考虑了在数据库中设置的初始值。

<div class="form-check form-check-inline">
    <input class="form-check-input" type="radio" name="sex" id="male" value="male"{!! ((old('sex') == 'male') ? ' checked="checked"' : ((empty(old('sex')) && $user->sex == 'male') ? ' checked="checked"' : '')) !!}/>
    <label class="form-check-label" for="male">Männlich</label>
</div>
<div class="form-check form-check-inline">
    <input class="form-check-input" type="radio" name="sex" id="female" value="female"{!! ((old('sex') == 'female') ? ' checked="checked"' : ((empty(old('sex')) && $user->sex == 'female') ? ' checked="checked"' : '')) !!}/>
    <label class="form-check-label" for="female">Weiblich</label>
</div>

经Laravel 5.7测试。