从表单中的选择列表传递id,得到“非对象”错误,Laravel-4

时间:2014-07-08 05:33:58

标签: php forms laravel-4 selectlist laravel-routing

在仪表板页面上,我在列出组件名称的表单中创建了一个选择列表;从选择列表传递的值显然是组件ID。在按下提交时,用户将路由到显示有关该组件的数据的页面。应该是简单的污垢...

控制器:

public function showDashboard()
{
    $components = Component::lists('name','id'); ...
    return View::make('dashboard', array('components'=>$components, ...))
}

dashboard.blade.php:

{{ Form::open(array('route' => array('components.show', $components->id), 'method'=>'get')) }}
{{ Form::Label('id','Component:') }}
{{ Form::select('id', $components) }}
{{ Form::submit('Show Component', array('class'=>'button')) }}
{{ Form::close() }}

我尝试了各种方法,每次都会遇到不同的错误。上面的代码甚至不让我显示仪表板页面 - 我得到一个“试图获取非对象的属性”错误。显然,它不喜欢$ components,因为它是作为列表数组而不是对象传递的。正如我所说,我确信这很简单,我只是无法弄清楚正确的语法,而Laravel文档并没有给我答案。谢谢!

2 个答案:

答案 0 :(得分:0)

问题不在于下拉列表或列表方法,而在于您的表单打开。在这里,您有$components->id作为路由的参数,但$components是一个数组,您无法访问其中的id属性。

答案 1 :(得分:0)

终于弄明白了。我在这之后发布了一个类似的问题,而不是重复答案,它就在这里:

How to pass id value from select list to controller when controller expects an object? laravel-4

非常简短的版本:更改Route :: get to Route :: post。上面链接中包含代码的详细信息。问题解决了!