Laravel 5.1 如何在刀片文件上使用 old('') 助手进行无线电输入

Posted

技术标签:

【中文标题】Laravel 5.1 如何在刀片文件上使用 old(\'\') 助手进行无线电输入【英文标题】:Laravel 5.1 how to use old('') helper on blade file for radio inputsLaravel 5.1 如何在刀片文件上使用 old('') 助手进行无线电输入 【发布时间】:2016-01-13 11:16:33 【问题描述】:

我目前正在学习 laravel 并创建我的第一个表单。一切都很棒,直到我想在我的刀片文件中使用 old('') 助手作为单选按钮。我不确定如何正确执行此操作,而且我似乎也无法在此处找到太多关于它的信息。

我的代码如下:

<div class="form-group">
    <label for="geckoHatchling">Gecko Hatchling?</label>
    <div class="radio">
        <label>
            <input type="radio" name="geckoHatchling" id="geckoHatchlingYes" value="1">
            Yes
        </label>
    </div>
    <div class="radio">
        <label>
            <input type="radio" name="geckoHatchling" id="geckoHatchlingNo" value="0" checked>
            No
        </label>
    </div>
</div>

【问题讨论】:

【参考方案1】:

你可以使用Form-helper,但它不是 Laravel 开箱即用的。您应该手动安装它。 Please read the docs.

使用表单助手

1.刀片

!! Form::radio('geckoHatchling', '1', (Input::old('geckoHatchling') == '1'), array('id'=>'geckoHatchlingYes', 'class'=>'radio')) !!
!! Form::radio('geckoHatchling', '0', (Input::old('geckoHatchling') == '0'), array('id'=>'geckoHatchlingNo', 'class'=>'radio')) !!

2。 php

echo Form::radio('geckoHatchling', '1', (Input::old('geckoHatchling') == '1'), array('id'=>'geckoHatchlingYes', 'class'=>'radio'));
echo Form::radio('geckoHatchling', '0', (Input::old('geckoHatchling') == '0'), array('id'=>'geckoHatchlingNo', 'class'=>'radio'));

没有表单助手

1.刀片

<input type="radio" name="geckoHatchling" id="geckoHatchlingYes" value="1" @if(Input::old('geckoHatchling')) checked @endif>
<input type="radio" name="geckoHatchling" id="geckoHatchlingNo" value="0" @if(!Input::old('geckoHatchling')) checked @endif>

2。 PHP

<input type="radio" name="geckoHatchling" value="1" class="radio" id="geckoHatchlingYes" <?php if(Input::old('geckoHatchling')== "1")  echo 'checked';  ?> >
<input type="radio" name="geckoHatchling" value="0" class="radio" id="geckoHatchlingNo" <?php if(Input::old('geckoHatchling')== "0")  echo 'checked';  ?> >

【讨论】:

请不要忘记 Form-Helper 不再随 Laravel 开箱即用了。如果您想使用它,您必须按照此处所述手动安装:laravelcollective.com/docs/5.0/html【参考方案2】:

我认为以下内容更简洁:

<input type="radio" name="geckoHatchling" value="1" @if(old('geckoHatchling')) checked @endif>

<input type="radio" name="geckoHatchling" value="0" @if(!old('geckoHatchling')) checked @endif>

@if 正在检查旧值的真实性并在任一情况下输出checked

【讨论】:

感谢您的回答,您能解释一下这两行之间的区别吗?我看到你添加了 !old 但不确定它是如何工作的? 添加! 就像在PHP 中说not。因此该行显示:如果 old() 的值为 false(因此零 = 未选中),则输出 checked 属性。 第二行不应该是 id="geckoHatchlingNo" value="0" @if(!old...【参考方案3】:

我已经尝试了接受的答案的解决方案,它对我不起作用,

我必须使用这个 花括号(这是刀片模板的回声)才能使用条件语句。

<input type="radio" name="geckoHatchling" id="geckoHatchlingYes" value="1" (old('geckoHatchling') == '1') ? 'checked' : ''>

【讨论】:

虽然这个答案可能是正确且有用的,但最好在其中附上一些解释来解释它如何帮助解决问题。如果有更改(可能不相关)导致它停止工作并且用户需要了解它曾经是如何工作的,这在未来变得特别有用。 这只是正确答案的一个较短版本,所以是的,这是一个可行的选择,但是自从我提出这个问题以来,Laravel 在 3 年内取得了进展,文档已经使这一点更加清晰 :) @AndyHolmes 当我搜索 如何在单选按钮上使用 old('') 时,它首先导致了你的问题。 Laravel 没有任何文档解释如何在单选按钮上使用 old()。希望对初学者有所帮助。【参考方案4】:

我偶然发现了一个我认为会更准确、更全面地回答这个问题的方法。提供的主要答案的问题是最后一个单选按钮将始终被选中向前移动。但是,我在下面提供了一个代码示例来展示如何解决这个问题。 (PS - 这适用于 Laravel 8,我只是假设它适用于以前的版本)

<div> <input type="radio" name="role" value="teacher" @if(old('role') == 'teacher') checked @endif> </div>
        
<div> <input type="radio" name="role" value="student" @if(old('role') == 'student') checked @endif> </div>
        
<div> <input type="radio" name="role" value="assistant" @if(old('role') == 'assistant') checked @endif> </div>

只是使用:

@if(old('role') checked @endif

如果您有多个单选按钮,则始终会选择最后一个单选按钮。

【讨论】:

是的,这对于您匹配实际值的场景来说是一个很好的解决方案,问题基于真/假,所以我选择的答案对我的用例是正确的。对于任何使用字符串值的人来说,您的答案也绝对是正确的【参考方案5】:

在 Laravel 9 之前

<input type"radio" name="active" value="1" old('active',user->active))?'checked',''/>
<input type"radio" name="active" value="0" old('active',user->active))?'','checked'/>

Laravel 9

<input type"radio" name="active" value="1" @checked(old('active',$user->active))/>
<input type"radio" name="active" value="0" @checked(!old('active',$user->active))/>

【讨论】:

这可以说是在 Laravel 9 之前通过使用自定义刀片指令来实现的,但是很好的更新:)

以上是关于Laravel 5.1 如何在刀片文件上使用 old('') 助手进行无线电输入的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 js 在刀片 laravel 中的 foreach 上更新变量

Laravel 5.1 不能在集合上使用 @foreach

如何使用 laravel 路由提供包含非刀片(Html)的文件夹? [复制]

如何将 Laravel Blade 中的第一个字母大写

如何在 Laravel 5.1 中追加结果

在 Laravel 5.1 中使用 VueJs 和 AJAX 提交表单