链接到laravel 5

时间:2016-03-30 12:46:38

标签: php laravel laravel-5

我有这条路线:

    Route::resource('users', 'UserController');
    Route::get('/users/create', 'UserController@create');

,控制器功能是:

 public function index()
  {
    $users=User::all();
    return View('users.index',compact('users'));    

 }

我在index.blade.php中显示了此代码,其中显示错误

<p>{{ link_to_route('users.create', 'Add new user') }}</p>

错误信息是:

  

路由[users.create]未定义。 (视图:   C:\ XAMPP \ htdocs中\ larapro \资源\视图\用户\ index.blade.php)

2 个答案:

答案 0 :(得分:1)

如果您希望视图中提到的路线有效,可以像这样添加。

Route::get('users/create', ['as' => 'users.create', 'uses' =>'UserController@create']);

虽然应该注意Route::resource()为您提供索引,创建,编辑,存储,显示,更新,删除路线。所以你正在编写冗余代码,第二次声明路由。

它正在使用Route::resource

有效地替换您之前创建的路线

请参阅Laravel文档: https://laravel.com/docs/5.2/controllers#restful-resource-controllers

如果在项目文件夹中运行php artisan route:list,您应该会看到为上面声明的资源“用户”创建的路径列表。

或者,删除您声明为Route :: resource的第二个路由应该全部处理。

答案 1 :(得分:1)

此行是多余的,应删除:

Route::get('/users/create', 'UserController@create');

它会导致您描述的问题,因为......

  1. Route::resource()已经注册了与此类似的路由,并自动将其命名为users.create
  2. 当您为/users/create注册路线时,会使用新路线替换该网址的现有路线
  3. 您的新路线尚未命名。
  4. 由于新路线取代了现有路线(名为users.create),因此现在没有该路线的路线。
  5. 因此,当您尝试在那里生成链接时,您将获得Route [users.create] not defined例外。