Select 从 table 数组中下拉
Select drop down from table array
这是我的控制器的一部分;
$agreements = Agreement::all();
print_r($agreements) //this works and displays an object/array with the details!
return View::make('individual_agreements.create')
->with('individual', $individual)
->with('agreements', $agreements)
->with('content_title', 'Create new individual agreement');
这是我的部分观点;
<div class="form-group">
{{ Form::label('agreement_name', 'Agreement name') }}
{{ Form::select('agreement_name', $agreements->agreement_name) }}
</div>
我在 table 中有一个名为 agreement_name 的字段。我想做的就是尽可能以最有效的 Laravel/Eloquent 方式将其变成下拉列表。
我不断收到标准 "agreement_name not defined" 错误,我在网上找了一个多小时后找不到 suitable 示例。
你应该这样做
$agreements = Agreement::lists('agreement_name', 'id');
all
return table 中的所有列,所以这就是您的代码无法工作的原因
如果您需要同一页面上其他内容的协议,请尝试
<div class="form-group">
{{ Form::label('agreement_name', 'Agreement name') }}
{{ Form::select('agreement_name', $agreements->lists('agreement_name', 'agreement_name')) }}
</div>
这将获取您的协议集合中的所有协议名称,并允许它们在 select 下拉列表中使用。第一个参数是列,第二个是键。
否则只需将您的查询更改为;
$agreements = Agreement::lists('agreement_name', 'id');
您进行此设置的方式允许使用 foreach
循环列出并显示结果:
<select name="agreement_name" class="">
<option value="">- Select -</option>
@foreach($agreements AS $agreement)
<option value="{{ $agreement->id }}">{{ $agreement->agreement_name }}</option>
@endforeach
</select>
因为您的 $agreements
是一个元素数组,所以调用 $agreements->agreement_name
是行不通的,而 $agreements[0]->agreement_name
可能会。如果您想使用 Form::select()
选项,则需要使用不同的方法来获取您的同意。检查该解决方案的其他答案。
希望这能提供一些见解!
编辑
我要注意,这不是Laravel做事的方式,但它确实可行。
这是我的控制器的一部分;
$agreements = Agreement::all();
print_r($agreements) //this works and displays an object/array with the details!
return View::make('individual_agreements.create')
->with('individual', $individual)
->with('agreements', $agreements)
->with('content_title', 'Create new individual agreement');
这是我的部分观点;
<div class="form-group">
{{ Form::label('agreement_name', 'Agreement name') }}
{{ Form::select('agreement_name', $agreements->agreement_name) }}
</div>
我在 table 中有一个名为 agreement_name 的字段。我想做的就是尽可能以最有效的 Laravel/Eloquent 方式将其变成下拉列表。
我不断收到标准 "agreement_name not defined" 错误,我在网上找了一个多小时后找不到 suitable 示例。
你应该这样做
$agreements = Agreement::lists('agreement_name', 'id');
all
return table 中的所有列,所以这就是您的代码无法工作的原因
如果您需要同一页面上其他内容的协议,请尝试
<div class="form-group">
{{ Form::label('agreement_name', 'Agreement name') }}
{{ Form::select('agreement_name', $agreements->lists('agreement_name', 'agreement_name')) }}
</div>
这将获取您的协议集合中的所有协议名称,并允许它们在 select 下拉列表中使用。第一个参数是列,第二个是键。
否则只需将您的查询更改为;
$agreements = Agreement::lists('agreement_name', 'id');
您进行此设置的方式允许使用 foreach
循环列出并显示结果:
<select name="agreement_name" class="">
<option value="">- Select -</option>
@foreach($agreements AS $agreement)
<option value="{{ $agreement->id }}">{{ $agreement->agreement_name }}</option>
@endforeach
</select>
因为您的 $agreements
是一个元素数组,所以调用 $agreements->agreement_name
是行不通的,而 $agreements[0]->agreement_name
可能会。如果您想使用 Form::select()
选项,则需要使用不同的方法来获取您的同意。检查该解决方案的其他答案。
希望这能提供一些见解!
编辑
我要注意,这不是Laravel做事的方式,但它确实可行。