Laravel 4 - 使用带有laravel代码块的php来获取选定状态

时间:2014-11-17 22:25:33

标签: php laravel laravel-4

这可能很简单但不确定如何绕过它。我需要为我的多选列表选择状态。它用作搜索过滤器的一部分。最后一个php行从查询字符串中获取我的水果值。

<select data-placeholder="Select fruit ..." name="fruit[]" id="fruit" multiple>

   @foreach (Fruit::where('active',1)->orderBy('title')->get() as $fruit)

         <option value="{{ $fruit->id }}">{{ $fruit->title }}</option>

   @endforeach

</select>
<?php if(isset($_GET["fruit"]))  echo implode(',', $_GET["fruit"]); ?>

2 个答案:

答案 0 :(得分:2)

你做错了。您应该从控制器传递data/array,而不是在视图中使用数据库查询,例如:

// In your controller's method

$fruits = Fruit::where('active',1)->orderBy('title')->lists('title', 'id');

// Load the view and pass the fruits
return view::make('view_name')->with('fruits', $fruits)
                              ->with('selected', Input::get('fruit'));

然后在view试试这个:

echo Form::select(
         'fruit[]',
         $fruits,
         $selected,
         array(
             'data-placeholder' => 'Select fruit ...',
             'id' => 'fruit'
         )
    );

答案 1 :(得分:1)

实现这一目标的最佳和最简单的方法是做如下。

控制器方法:

// Assuming that $_GET['fruit'] is the id
$fruit = Input::get('fruit', null); // $_GET['fruit'] basically

// This is better for selects as it provides a key => value array
$fruits = Fruit::where('active', 1)->orderBy('title')->lists('title', 'id');

return View::make('view_name', compact('fruit', 'fruits'));

在您的实际视图中,假设使用刀片:

{{ Form::select('fruit', $fruits, $fruit ['data-placeholder' => 'etc etc..']) }}

我们走了。很干净的代码,简短而甜蜜,希望这会有所帮助。