Laravel链接到未定义的路由

时间:2014-02-07 09:04:02

标签: php laravel laravel-4

我正在对profile控制器进行分组,我希望将其链接到该控制器。然后我定义了这条路线:

//Group to put all the routes that need login first
Route::group(array('prefix'=> 'admin', 'before' => 'csrf'), function(){
    Route::resource('/profile' , 'ProfileController', array('as'=>'profile') );
});

这是我的菜单链接:

<li><a href="{{ URL::route('admin.profile') }}">profile Managment</a></li>

这是我在终端中route的结果:

+--------+----------------------------------+------------------------+---------------------------+----------------+---------------+
| Domain | URI                              | Name                   | Action                    | Before Filters | After Filters |
+--------+----------------------------------+------------------------+---------------------------+----------------+---------------+
|        | GET /                            | index                  | Closure                   |                |               |
|        | GET admin/index                  | dashboard              | Closure                   |                |               |
|        | GET logout                       | logout                 | Closure                   |                |               |
|        | POST auth                        | auth                   | Closure                   | csrf           |               |
|        | GET login                        | login                  | Closure                   |                |               |
|        | GET admin/profile                | admin..profile.index   | ProfileController@index   | csrf           |               |
|        | GET admin/profile/create         | admin..profile.create  | ProfileController@create  | csrf           |               |
|        | POST admin/profile               | admin..profile.store   | ProfileController@store   | csrf           |               |
|        | GET admin/profile/{profile}      | admin..profile.show    | ProfileController@show    | csrf           |               |
|        | GET admin/profile/{profile}/edit | admin..profile.edit    | ProfileController@edit    | csrf           |               |
|        | PUT admin/profile/{profile}      | admin..profile.update  | ProfileController@update  | csrf           |               |
|        | PATCH admin/profile/{profile}    |                        | ProfileController@update  | csrf           |               |
|        | DELETE admin/profile/{profile}   | admin..profile.destroy | ProfileController@destroy | csrf           |               |
+--------+----------------------------------+------------------------+---------------------------+----------------+---------------+

现在我收到了这个错误:

ErrorException

Route [admin.profile] not defined. (View: /var/www/alachiq/app/views/back_end/menu.blade.php) (View: /var/www/alachiq/app/views/back_end/menu.blade.php) (View: /var/www/alachiq/app/views/back_end/menu.blade.php)

3 个答案:

答案 0 :(得分:5)

/方法中删除Route::resource字符。它导致双点,这反过来导致您的错误消息。

应该是:

Route::resource('profile' , 'ProfileController', array('as'=>'profile') );

格式(/profileprofile)通常都有效,但在prefix选项与Route::group一起使用时,您需要从资源中删除/ URL。

编辑:在我看来,您应该将链接指向路线admin.profile.index,而不是admin.profile

答案 1 :(得分:2)

你为什么不做URL::to('admin/profile');

因为你试图用URL::route('admin.profile');实现的几乎相同的类型数量。

根据我的理解,URL::route('profile');将为您指定的同名路线生成完整的URL字符串。

修改

echo URL::route('admin.profile.index');

应该有效。根据{{​​3}},您应该在ROUTE NAME下包含.index。

答案 2 :(得分:1)

Laravel 5.6及更高版本的解决方案

第一步:在您的IDE终端中执行php artisan route:list

第二步:在URI列中找到管理员/配置文件。

第三步:在与该uri相关的“名称”列中,您应该找到类似 profile.index

最后一步:您应使用href中第三步提供的名称。

注意:与laravel 5.6及更高版本中的laravel 5.3相反,使用admin.profile.index无效