我是否必须在 routes.php 中定义每个控制器方法?
Do i have to define every controller method in routes.php?
这是我当前的 routes.php 文件:
<?php
Route::get('/', 'AdminController@index');
Route::get('/posts','PostsController@index');
Route::get('/posts/create','PostsController@create');
Route::get('/tags','TagsController@index');
Route::get('/health','HealthController@index');
Route::get('/health/create','HealthController@create');
Route::get('/health/categories','HealthController@categories');
Route::controllers([
'auth' => 'Auth\AuthController',
'password' => 'Auth\PasswordController'
]);
如果我不这样做,例如,我不能在 blade 视图中使用助手,比如动作。它抛出一个空异常。
所以问题是,我必须在这里定义所有控制器操作吗?否则我将无法直接使用它们?例如在重定向到操作 link.
将此添加到 blade:
<a href="{{ action('PostsController@index') }}">
抛出异常,除非我特别添加带有 Route::get 的路由 如果我向 Route::controllers 添加条目,则不工作。
也试过
<a href="{{ action('\App\Http\Controllers\PostsController@getIndex') }}">
<a href="{{ action('\App\Http\Controllers\PostsController@index') }}">
这里的问题是您的控制器操作名称。如果您使用隐式控制器路由 (Route::controllers
),您的方法名称必须 以 HTTP 动词 .
开头
而不是 index()
你需要 getIndex()
.
您可以使用 php artisan route:list
命令轻松检查 Laravel 实际注册的路由。
生成 URL 将如下所示:
<a href="{{ action('PostsController@getIndex') }}">
注意 控制器路由仅在将 PostsController
添加到 Route::controllers
时才有效。 (我假设你这样做了,但只是为了确定)
Route::controllers([
'auth' => 'Auth\AuthController',
'password' => 'Auth\PasswordController',
'posts' => `PostsController`
]);
这是我当前的 routes.php 文件:
<?php
Route::get('/', 'AdminController@index');
Route::get('/posts','PostsController@index');
Route::get('/posts/create','PostsController@create');
Route::get('/tags','TagsController@index');
Route::get('/health','HealthController@index');
Route::get('/health/create','HealthController@create');
Route::get('/health/categories','HealthController@categories');
Route::controllers([
'auth' => 'Auth\AuthController',
'password' => 'Auth\PasswordController'
]);
如果我不这样做,例如,我不能在 blade 视图中使用助手,比如动作。它抛出一个空异常。
所以问题是,我必须在这里定义所有控制器操作吗?否则我将无法直接使用它们?例如在重定向到操作 link.
将此添加到 blade:
<a href="{{ action('PostsController@index') }}">
抛出异常,除非我特别添加带有 Route::get 的路由 如果我向 Route::controllers 添加条目,则不工作。
也试过
<a href="{{ action('\App\Http\Controllers\PostsController@getIndex') }}">
<a href="{{ action('\App\Http\Controllers\PostsController@index') }}">
这里的问题是您的控制器操作名称。如果您使用隐式控制器路由 (Route::controllers
),您的方法名称必须 以 HTTP 动词 .
而不是 index()
你需要 getIndex()
.
您可以使用 php artisan route:list
命令轻松检查 Laravel 实际注册的路由。
生成 URL 将如下所示:
<a href="{{ action('PostsController@getIndex') }}">
注意 控制器路由仅在将 PostsController
添加到 Route::controllers
时才有效。 (我假设你这样做了,但只是为了确定)
Route::controllers([
'auth' => 'Auth\AuthController',
'password' => 'Auth\PasswordController',
'posts' => `PostsController`
]);