我正在尝试创建一个向控制器提交数据的表单。但是,我收到了这个错误 -
Route [site.add] not defined.
这是我的routes.php -
Route::resource('site','SiteController');
Route::get('submitsite','SiteController@submit');
Route::post('storesite','SiteController@add');
这是我的观点文件 -
{{ Form::open(array(
'route' => 'site.add'
))
}}
//Form Elements go here
{{ Form::close() }}
我确实用另一个完美运行的控制器替换了这个名字,但这个给了我一些问题..
答案 0 :(得分:2)
您声明了一条没有这样名字的路线:
Route::post('storesite','SiteController@add');
在生成代码的表单中,您正在使用'route' => 'site.add'
,并且此名称不提供任何路由,因此您现在可以将表单生成代码更改为:
{{ Form::open(array('url' => 'site.add')) }}
或者您可以通过为其指定名称来更改路线声明:
Route::post('storesite', array('as' => 'site.add', 'uses' => 'SiteController@add'));
as
用于为该路线指定名称,uses
用于指定controller@method
名称作为其操作处理程序。
使用命名路由更好,因为要为给定路由生成URI
,您只能使用路由名称而不是复杂URI
,并且它很容易如果您在任何时候更改该路由的URI
,则要记住并且也不会影响代码,因为使用名称从命名路由创建的URI
不依赖于直接URI/PATH
,它在运行时生成,因此易于维护。所以,如果你有这样的路线:
Route::post('storesite', array('as' => 'site.add', 'uses' => 'SiteController@add'));
你使用过这样的表格:
{{ Form::open(array('route' => 'site.add')) }}
现在,如果您将uses/action
从SiteController@add
更改为SiteController@addnew
,那么您甚至可以在不触及其他代码的情况下执行此操作,因为您的路由已被其使用过直接使用SiteController@add
生成URI
。
答案 1 :(得分:0)
Route [site.add]
未定义,因为您尚未添加名称路由。
替换
Route::post('storesite','SiteController@add');
到
Route::post('storesite',[ 'as' => 'site.add', 'uses' => 'SiteController@add']);