这是我控制器的一部分;
$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>
我在表中有一个名为agreement_name的字段。我想做的只是以最有效的拉拉维尔/雄辩方式将其转换为下拉列表。
我一直收到标准的"agreement_name未定义"错误,并且我已经在网上寻找了一个多小时后,无法在网上任何地方找到合适的示例。
如果您需要在同一页面上的其他内容达成协议,请尝试
<div class="form-group">
{{ Form::label('agreement_name', 'Agreement name') }}
{{ Form::select('agreement_name', $agreements->lists('agreement_name', 'agreement_name')) }}
</div>
这将获取协议集合中的所有协议名称,并允许在选择下拉列表中使用它们。第一个参数是列,第二个参数是键。
否则,只需将您的查询更改为;
$agreements = Agreement::lists('agreement_name', 'id');
你应该这样做
$agreements = Agreement::lists('agreement_name', 'id');
all
返回表中的所有列,所以这就是您的代码不起作用的原因
此设置的方式允许使用 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的做事方式,但它肯定是可行的。