Действие контроллера Laravel возвращает ошибку 404

0

Я получаю ошибку 404 при попытке получить доступ к маршруту, связанному с действием контроллера.

У меня есть маршрут, определенный таким образом в файле routes.php.

Route::controller('error', 'ErrorsController');

Класс ErrorsController выглядит следующим образом.

class ErrorsController extends BaseController {

    public function __construct()
    {
        // vacio
    }

    public function getIndex()
    {
        return View::make('error.accessdenied');
    }

    public function getAccessDenied()
    {
        return View::make('error.accessdenied');
    }
}

У меня есть вид со ссылкой на chek, если он работает правильно. Ссылка создается следующим образом

{{ HTML::linkAction('ErrorsController@getAccessDenied', 'Error') }}

Когда я нажимаю на ссылку, страница переходит на URL-адрес "mytestdomain.com/error/access-denied", возвращающий ошибку 404, но когда я обращаюсь к URL-адресу "mytestdomain.com/error", он работает отлично.

Любая идея о том, что я делаю неправильно?

EDIT: Выполняя команды 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       |                |               |
+--------+------------------------------------------------------------------------------------------------+------+--------------------------------------+----------------+---------------+

Работают только семенон и четвертые.

Теги:
laravel-routing

2 ответа

0
Лучший ответ

Как-то я нашел проблему.

По какой-то причине мой сервер Apache не переписывает маршрут mytestdomain.com/error/*. Вероятно, это связано с ошибкой слова и модулем apache mod_rewrite.

В любом случае, определение маршрута следующим образом решает проблему.

Route::controller('fail', 'ErrorsController');
0

Похоже, что указание маршрута таким образом, как у вас, не будет работать. Этот тип маршрутизации работает только для запросов RESTful. См.> Http://laravel.com/docs/4.2/controllers#restful-resource-controllers >.

Возможно, вам придется явно указать маршрут с помощью Route :: get/post.

  • 0
    Изменение маршрута устраняет проблему, однако все маршруты к другим моим контроллерам определены так же, как и этот, и работают тоже.
  • 0
    Кроме того, согласно документации laravel, здесь Route::controller() является способом определения неявных контроллеров.
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню