为什么Laravel"记得"这条删除的路线?

时间:2015-02-07 15:32:02

标签: laravel-4 routing

我有一个route > controller > view组合,在Laravel中显示了一个登录表单 不再需要表单,所以我只删除了下面显示的代码。

// file: routes.php
Route::get('/account/sign-in', array(
    'as'    => 'account-sign-in',
    'uses'  => 'AccountController@getSignIn'
));

// file: AccountController.php
 public function getSignIn() {
   return View::make('account.signin');
}

// file: /app/views/account/signin.blade.php

如果我在浏览器地址栏中输入旧网址:/account/sign-in,我将获得Laravels“whoops”屏幕:

Symfony \ Component \ HttpKernel \ Exception \ MethodNotAllowedHttpException

* @throws \Symfony\Component\HttpKernel\Exception\MethodNotAllowedHttpException
     */
    protected function methodNotAllowed(array $others)
    {
        throw new MethodNotAllowedHttpException($others);
    }

如何在请求旧路由时阻止抛出此异常?


相关信息

  • Laravel版本:v4.2.5
  • 如果我向Laravel输入“未知”的任何其他路线 - 它会被App::missing();路线捕获并重定向 - 带有“用户友好”消息
  • /account开头的路线列表(还有更多,为简洁而减少的列表)
POST account/change-password  
GET|HEAD account/change-password
account/sign-out
POST account/forgot-password 
POST account/create  
 POST account/sign-in   
GET|HEAD account/forgot-password

我已经尝试了什么

  • composer dump autoload

1 个答案:

答案 0 :(得分:1)

它不记得任何东西。

它显示404错误页面,因为该路径不存在。您可以通过例外MethodNotAllowedHttpException

查看

原因是你有一个Route::post('account/sign-in')

如果您不想显示该路由的404错误页面 - 您需要保留Route :: get() - 然后将(使用return Redirect::*)重定向到控制器中的另一个页面 - 这样用户就会自动重定向。

或者您需要将Route::post('account/sign-in')更改为其他内容。