Laravel Route无法正常工作

时间:2014-06-02 06:34:28

标签: php laravel-4 routing

我正在尝试创建一个向控制器提交数据的表单。但是,我收到了这个错误 -

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() }}

我确实用另一个完美运行的控制器替换了这个名字,但这个给了我一些问题..

2 个答案:

答案 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/actionSiteController@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']);