Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在表单中从选择列表传递id,获取“非对象”错误,Laravel-4_Php_Forms_Laravel 4_Selectlist_Laravel Routing - Fatal编程技术网

Php 在表单中从选择列表传递id,获取“非对象”错误,Laravel-4

Php 在表单中从选择列表传递id,获取“非对象”错误,Laravel-4,php,forms,laravel-4,selectlist,laravel-routing,Php,Forms,Laravel 4,Selectlist,Laravel Routing,在仪表板页面上,我创建了一个选择列表,该列表以一种形式列出了组件的名称;从选择列表传递的值显然是组件id。按submit时,用户将被路由到显示该组件数据的页面。应该非常简单 控制器: public function showDashboard() { $components = Component::lists('name','id'); ... return View::make('dashboard', array('components'=>$components,

在仪表板页面上,我创建了一个选择列表,该列表以一种形式列出了组件的名称;从选择列表传递的值显然是组件id。按submit时,用户将被路由到显示该组件数据的页面。应该非常简单

控制器:

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文档也没有给我答案。谢谢

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

最终解决了这个问题。在此之后,我在这里发布了一个类似的问题,这里没有重复答案,而是:


非常简短的版本:change Route::get to Route::post。详细信息和代码在上面的链接中。问题解决了

谢谢,我明白了-我搞不懂的是如何构造表单开口,将id值传递给目标路由,然后让目标页面使用该id显示该id的数据。因此,这是我当前更正的表单开口:{{form::openarray'route'=>'components.show','method'=>'get}谢谢,我明白了-我搞不清楚的是如何构造表单打开,将id值传递给目标路由,然后让目标页面使用该id显示该id的数据。因此,我当前更正的表单打开:{{form::openarray'route'=>'components.show','method'=>'get'}-这将正确显示下拉选择列表:组件名称。但当我按下Submit时,我会尝试获取非对象错误的属性。目标控制器使用:$component=$this->component->find$id;: