【发布时间】:2014-08-29 10:22:48
【问题描述】:
我在仪表板视图中构建了一个选择列表,其中列出了各种组件的 ID 和名称。数据被传递给一个控制器,该控制器使用传递的 id 为该 id 提取正确的组件数据。问题是控制器被构造为期望从中获取 id 的对象,因此当我从列表中提交 id 时,我收到“尝试获取非对象的属性”错误。 (无论我是提交给路由还是直接提交给控制器都没有关系;我得到了同样的错误。)这是代码:
PagesController(为仪表板创建列表数组):
public function showDashboard()
{
$components = Component::lists('name','id');
return View::make('dashboard', array(
'components'=>$components, ...
));
}
选择列表的源代码片段:
<form method="GET" action="https://..." accept-charset="UTF-8">
<select id="id" name="id"><option value="2">Component Name</option>...
组件模型:
class Component extends Eloquent {
protected $table = 'components'; ... }
组件控制器:
public function show($id)
{
$component = $this->component->find($id);
return View::make('components.show', array(
'component'=>$component, ...
));
}
dashboard.blade.php:
{{ Form::open(array(
'action' => 'ComponentsController@show',
'method'=>'get'
)) }}
{{ Form::Label('id','Component:') }}
{{ Form::select('id', $components) }}
{{ Form::close() }}
相同的控制器代码用于其他目的并且工作正常,例如,当我从 URL 传递特定 id 时,它会接受该 id 而不会出错。所以,我知道这应该是涉及表单打开的简单事情,但我无法弄清楚。我怎样才能解决这个问题?谢谢!
【问题讨论】:
标签: php forms laravel-4 controller