Laravel/Blade 下拉列表 - 用于多个字段
Laravel/Blade Drop Down List - For more than one field
我正在尝试使用 blade 显示来自 table 数据的下拉列表。我遇到的问题是,我想在 table 中显示 两个 字段的结果,而不仅仅是一个。
所以我想要渲染类似的东西;
<select id="agreement_type" name="agreement_type">
<option value="1">Agreement Field 1 - Agreement Field 2</option>
<option value="2">Agreement Field 1 - Agreement Field 2</option>
<option value="4">Agreement Field 1 - Agreement Field 2</option>
</select>
我的控制器目前看起来像这样;
$agreements = Agreement::lists('agreement_type','id');
return View::make('client_agreements.create')
->with('agreements', $agreements);
我的 blade 视图当前如下所示;
<div class="form-group">
{{ Form::label('agreement_type', 'Agreement type') }}
{{ Form::select('agreement_type', $agreements) }}
</div>
我尝试以各种方式修改视图和控制器以获得所需的输出。但是无法让它工作。
我想显示 agreement_type
和 level
并将 id
设置为值,所以我尝试了;
$agreements = Agreement::lists('agreement_type'.'level','id');
但这只是将 level
显示为值并完全忽略 id
。
这是最简单的方法。只需使用 foreach
循环来构建选项数组:
$agreements = Agreement::all();
$agreementOptions = array();
foreach($agreements as $agreement){
$agreementOptions[$agreement->id] = $agreement->agreement_type.' '.$agreement->level;
}
return View::make('client_agreements.create')
->with('agreements', $agreementOptions);
不过,您也可以在模型中定义 attribute accessor。您可以使用它来创建可以正常访问的新属性,但是您可以 运行 逻辑来生成它们(比如组合到属性)
public function getSelectOptionAttribute(){
return $this->attributes['agreement_type'].' '.$this->attributes['level'];
}
然后你可以使用lists
:
$agreements = Agreement::all()->lists('select_option', 'id');
(Laravel 将方法名称的 SelectOption
(标准大小写)转换为属性的 select_option
(蛇形大小写),所以不要对此感到困惑)
我正在尝试使用 blade 显示来自 table 数据的下拉列表。我遇到的问题是,我想在 table 中显示 两个 字段的结果,而不仅仅是一个。
所以我想要渲染类似的东西;
<select id="agreement_type" name="agreement_type">
<option value="1">Agreement Field 1 - Agreement Field 2</option>
<option value="2">Agreement Field 1 - Agreement Field 2</option>
<option value="4">Agreement Field 1 - Agreement Field 2</option>
</select>
我的控制器目前看起来像这样;
$agreements = Agreement::lists('agreement_type','id');
return View::make('client_agreements.create')
->with('agreements', $agreements);
我的 blade 视图当前如下所示;
<div class="form-group">
{{ Form::label('agreement_type', 'Agreement type') }}
{{ Form::select('agreement_type', $agreements) }}
</div>
我尝试以各种方式修改视图和控制器以获得所需的输出。但是无法让它工作。
我想显示 agreement_type
和 level
并将 id
设置为值,所以我尝试了;
$agreements = Agreement::lists('agreement_type'.'level','id');
但这只是将 level
显示为值并完全忽略 id
。
这是最简单的方法。只需使用 foreach
循环来构建选项数组:
$agreements = Agreement::all();
$agreementOptions = array();
foreach($agreements as $agreement){
$agreementOptions[$agreement->id] = $agreement->agreement_type.' '.$agreement->level;
}
return View::make('client_agreements.create')
->with('agreements', $agreementOptions);
不过,您也可以在模型中定义 attribute accessor。您可以使用它来创建可以正常访问的新属性,但是您可以 运行 逻辑来生成它们(比如组合到属性)
public function getSelectOptionAttribute(){
return $this->attributes['agreement_type'].' '.$this->attributes['level'];
}
然后你可以使用lists
:
$agreements = Agreement::all()->lists('select_option', 'id');
(Laravel 将方法名称的 SelectOption
(标准大小写)转换为属性的 select_option
(蛇形大小写),所以不要对此感到困惑)