形式::从GET变量中选择默认值


Form::select default value from GET variables

我有以下表格:

            {{ Form::open(array('route' => 'get.index', 'method' => 'get')) }}
                {{ Form::label('order', 'Order by') }}
                {{ Form::select('order' , array('firstname' => 'First Name', 'lastname' => 'Last Name', 'state' => 'State')) }}
                {{ Form::submit('Order results') }}
            {{ Form::close() }}

我希望所选的选项是与查询字符串中的order变量(如果有的话)相对应的选项。如果没有任何查询参数,它也应该默认为第一个选项。

这可能吗?

这个怎么样:

<?php 
    $availableOrders = ['firstname' => 'First Name', 'lastname' => 'Last Name', 'state' => 'State'];
    $selectedOrder = Input::get('order', null);
    $selectedOption = !is_null($selectedOrder) && array_key_exists($selectedOrder, $availableOrders) ? $selectedOrder : 'firstname';
?>
{{ Form::select('order', $availableOrders, $selectedOption); }}

它非常自我描述:

首先定义一组可用的订单选项。

然后,您可以从查询字符串中选择一个。

如果它不为null,并且有一个带有这样数组键的选项存在,那么让我们选择它。如果不是,那么我们选择第一个。

一旦你有了所有这些值,你只需使用blade和Form::select输出它。

不要忘记,这可以在更少的代码行中完成,但通过这种方式,整个想法非常清晰。