使用 Laravel 4,如果会话密钥是指定值,如何将单选按钮标记为已选中?

Using Laravel 4, how do I mark a radio button as checked if a session key is a specified value?

我有一个多页表单,其中包含两个具有相同名称属性的单选按钮。当我 select 一个并单击下一步按钮时,我将该单选按钮的值保存到具有表单字段名称和所选值的会话数组中。如果用户返回页面,我希望选中之前选择的单选按钮。

这是我想出的:

查看: 选择列表-type.blade.php

<div class="form-group">
  <?php $checked_status = Session::get('listing_form_data.type') === 'property' ? true : false; ?>
  {{ Form::radio('type', 'property', $checked_status) }} Create Property Listing
</div>

<div class="form-group">
  <?php $checked_status = Session::get('listing_form_data.type') === 'room' ? true : false; ?>
  {{ Form::radio('type', 'room', $checked_status) }} Create Room Listing
</div> 

这行得通,但看起来草率。首先,我认为检查会话值的 if 语句不应该在视图中,我很想找到一种在 blade 中执行此操作的方法。

使用 Laravel 4,根据指定会话密钥的值将单选按钮标记为已选中的最佳做法是什么?

为什么不直接将条件右内联到表单助手中,就像这样:

<div class="form-group">
  {{ Form::radio('type', 'room', (Session::get('listing_form_data.type') === 'room') ? true : false) }} Create Room Listing
</div>

就我个人而言,我认为从视图中检查会话设置没有任何问题...

既然你提到你想在控制器中做:

$type = Session::get('listing_form_data.type');
return View::make('view')->with('type', $type);

查看:

{{ Form::radio('type', 'property', $type === 'property') }} Create Property Listing
{{ Form::radio('type', 'room', $type === 'room') }} Create Room Listing

甚至:

$type = Session::get('listing_form_data.type');
$isProperty = ($type === 'property');
$isRoom = ($type === 'room');
return View::make('view')->with(compact('isProperty', 'isRoom'));

查看:

{{ Form::radio('type', 'property', $isProperty) }} Create Property Listing
{{ Form::radio('type', 'room', $isRoom) }} Create Room Listing