Laravel 控制器动作 returns 错误 404
Laravel controller action returns error 404
我在尝试访问路由 link 到控制器操作时收到 404 错误。
我在 routes.php 文件中定义了这样的路由。
Route::controller('error', 'ErrorsController');
ErrorsController class 如下所示。
class ErrorsController extends BaseController {
public function __construct()
{
// vacio
}
public function getIndex()
{
return View::make('error.accessdenied');
}
public function getAccessDenied()
{
return View::make('error.accessdenied');
}
}
我有一个 link 视图可以检查它是否正常工作。 link创建如下
{{ HTML::linkAction('ErrorsController@getAccessDenied', 'Error') }}
当我点击 link 页面移动到 URL 'mytestdomain.com/error/access-denied' 返回 404 错误,但是当我访问URL 'mytestdomain.com/error' 完美运行。
知道我做错了什么吗?
编辑:
运行 命令 php artisan routes
这些是指向 ErrorsController
的路由:
+--------+------------------------------------------------------------------------------------------------+------+--------------------------------------+----------------+---------------+
| Domain | URI | Name | Action | Before Filters | After Filters |
+--------+------------------------------------------------------------------------------------------------+------+--------------------------------------+----------------+---------------+
| | GET|HEAD error/index/{one?}/{two?}/{three?}/{four?}/{five?} | | ErrorsController@getIndex | | |
| | GET|HEAD error | | ErrorsController@getIndex | | |
| | GET|HEAD error/access-denied/{one?}/{two?}/{three?}/{four?}/{five?} | | ErrorsController@getAccessDenied | | |
| | GET|HEAD|POST|PUT|PATCH|DELETE error/{_missing} | | ErrorsController@missingMethod | | |
+--------+------------------------------------------------------------------------------------------------+------+--------------------------------------+----------------+---------------+
只有第二个和第四个在工作。
按照您的方式指定路线似乎行不通。这种类型的路由仅适用于 RESTful 请求。参见 >http://laravel.com/docs/4.2/controllers#restful-resource-controllers>。
您可能必须使用 Route::get/post.
显式指定路由
不知何故我发现了问题。
出于某种原因,我的 Apache 服务器没有重写 mytestdomain.com/error/ * 路由。可能与单词错误和 apache 模块有关 mod_rewrite.
总之,如下定义路由即可解决问题。
Route::controller('fail', 'ErrorsController');
我在尝试访问路由 link 到控制器操作时收到 404 错误。
我在 routes.php 文件中定义了这样的路由。
Route::controller('error', 'ErrorsController');
ErrorsController class 如下所示。
class ErrorsController extends BaseController {
public function __construct()
{
// vacio
}
public function getIndex()
{
return View::make('error.accessdenied');
}
public function getAccessDenied()
{
return View::make('error.accessdenied');
}
}
我有一个 link 视图可以检查它是否正常工作。 link创建如下
{{ HTML::linkAction('ErrorsController@getAccessDenied', 'Error') }}
当我点击 link 页面移动到 URL 'mytestdomain.com/error/access-denied' 返回 404 错误,但是当我访问URL 'mytestdomain.com/error' 完美运行。
知道我做错了什么吗?
编辑:
运行 命令 php artisan routes
这些是指向 ErrorsController
的路由:
+--------+------------------------------------------------------------------------------------------------+------+--------------------------------------+----------------+---------------+
| Domain | URI | Name | Action | Before Filters | After Filters |
+--------+------------------------------------------------------------------------------------------------+------+--------------------------------------+----------------+---------------+
| | GET|HEAD error/index/{one?}/{two?}/{three?}/{four?}/{five?} | | ErrorsController@getIndex | | |
| | GET|HEAD error | | ErrorsController@getIndex | | |
| | GET|HEAD error/access-denied/{one?}/{two?}/{three?}/{four?}/{five?} | | ErrorsController@getAccessDenied | | |
| | GET|HEAD|POST|PUT|PATCH|DELETE error/{_missing} | | ErrorsController@missingMethod | | |
+--------+------------------------------------------------------------------------------------------------+------+--------------------------------------+----------------+---------------+
只有第二个和第四个在工作。
按照您的方式指定路线似乎行不通。这种类型的路由仅适用于 RESTful 请求。参见 >http://laravel.com/docs/4.2/controllers#restful-resource-controllers>。
您可能必须使用 Route::get/post.
显式指定路由不知何故我发现了问题。
出于某种原因,我的 Apache 服务器没有重写 mytestdomain.com/error/ * 路由。可能与单词错误和 apache 模块有关 mod_rewrite.
总之,如下定义路由即可解决问题。
Route::controller('fail', 'ErrorsController');