【问题标题】:Laravel - fill <select> element with old input (edit/update)Laravel - 用旧输入填充 <select> 元素(编辑/更新)
【发布时间】:2015-01-26 02:43:51
【问题描述】:

我必须从数据库中编辑一些值。

使用文本字段或区域,我可以像这样用旧日期填充表单字段

{{ Form::text('hours', Input::old('hours', $vacature->hours), array('class' => 'form-control', 'placeholder' => 'Aantal uren')) }}

Input::old('hours', $vacature-&gt;hours) 负责从模型中检索到的旧输入。

当我尝试对 select 字段执行相同操作时,它不起作用。

 {{ Form::select('employmentType',Input::old('employmentType', $vacature->employmentType), array('vast' => 'Vast dienstverband', 'Freelance' => 'Freelance'), null, array('class' => 'form-control')) }}

我已经坚持了很长一段时间了。所以我希望我能在这里得到一些帮助!

【问题讨论】:

    标签: forms select laravel


    【解决方案1】:

    我相信,当您使用 Laravel 的表单并将其绑定到模型时,您只需使用 Redirect::back()-&gt;withInput(); 方法,laravel 就会为您完成这项工作。

    这是你可以从 Laravel 文档中做到这一点的方法:

    Form::model($user, array('route' => array('user.update', $user->id)))
    

    Doc page.

    【讨论】:

    • 我想我应该绑定模型。现在我没有那样做。我让控制器只检索数据,然后返回一个包含所有数据的数组。我猜这是一种不太好的做事方式:)
    • 是的,模型绑定也可以用在表单和路由中,当你在路由中绑定一个对象时,当你点击链接users/1例如laravel会尝试自动获取用户,所以您希望必须在控制器中手动获取它。
    【解决方案2】:

    你应该重新排列传递的参数:

     {{ Form::select('employmentType', array('vast' => 'Vast dienstverband', 'Freelance' => 'Freelance'), Input::old('employmentType', $vacature->employmentType), array('class' => 'form-control')) }}
    

    基本上你应该通过:

    • 字段名称
    • 选项(键 => 值对)
    • 选定值(如果有则设置旧值,如果没有则设置默认值)
    • 字段属性

    或:

    Form::select('fieldName', $options, $selectedValue, $fieldAttributes)
    

    如果您一开始没有成功,请尝试将问题“分割”成几个步骤: 看看你得到了什么作为“旧”值,看看当你向它传递一个静态选择值时选择的行为等等。

    保重

    【讨论】:

    • 谢谢!这个解决方案确实有效!所以只是争论的顺序把事情搞砸了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-11
    • 1970-01-01
    相关资源
    最近更新 更多