Form中的Foreach ::在Laravel 4中选择

时间:2013-10-29 21:17:24

标签: laravel-4

我尝试使用Laravel的帮助程序来处理变量,但它会抛出错误,当我对html标记执行相同操作时,它可以正常工作。

{{ Form::select('categoria', array(
        @foreach($enlaceid as $categoria) 
          $categoria->id => $categoria->nombre  {{-- I tryed too with englobing with {{ }}
      )) }} 
      @endforeach

    <select name="categoria">
        @foreach($enlaceid as $categoria) 
        <option value= " {{ $categoria->id }} "> {{$categoria->nombre}} </option>
        @endforeach
    </select>

4 个答案:

答案 0 :(得分:5)

使用lists()方法将其传递给Form::select()方法。像这样:

$categories = Category::lists('name', 'id');

在您看来:

{{ Form::select('category_id', $categories) }}

答案 1 :(得分:2)

如果您想在laravel 5.2或更高版本中使用foreach laravelcollective,您可以使用与@garethDaine相同但在laravel 5.2之上,使用pluck()代替lists(),因为lists()函数已被删除在laravel 5.2。

所以在例子中是:

$banks = Bank::pluck('name', 'id'); 

而不是

$banks = Bank::lists('name', 'id');

然后在您的视图中:

{!! Form::select('bank_id', $banks, null, ['class' => 'form-control']) !!}

注意:pluct()中的第一个数组将在<option>上显示名称,第二个数组将以value="1"为例。

答案 2 :(得分:0)

如果您还想为选项添加默认值,则需要执行以下操作:

$categories = Category::lists('name', 'id')->toArray();

在您看来:

{{ Form::select('category_id', array('0' => 'Default') + $categories) }}

答案 3 :(得分:0)

由德鲁·哈蒙德(Drew Hammond)编辑的加雷斯·戴恩(Gareth Daine)的答案对我很有效,

我的控制器

$category = Category::all();

我的观点

{!! Form::select('category_id', $categories->pluck('name', 'id')) !!}