laravel 404中止如何做到这一点

时间:2017-06-14 12:39:13

标签: php laravel http-status-code-404

我的问题是我无法编写代码,工作视图404 ... 我的地址网站是f.e:http://hospital.com 我的路线是这样的:

 Route::post('/panel/perscriptions/add','PrescriptionsController@addPrescription');
 Route::post('/panel/perscriptions/delete','PrescriptionsController@deletePerscription');

在处理程序上我有这样的代码:

public function render($request, Exception $exception)
{
    if($exception instanceof NotFoundHttpException)
    {
        return response()->view('errors.404', [], 404);
    }
    return parent::render($request, $exception);
}

我的地址网站例如:http://hospital.com 当然,当我用网址写的时候,它就有效了,这不是我的路线:http://hospital.com/someWordWhichIsNotInRoutes

然后我的404视图有效,但是当我粘贴到网址时:http://hospital.com/panel/perscriptions/add 然后我有错误:

MethodNotAllowedHttpException

当然用户必须登录才能添加perscription但是当我粘贴这个url并不重要...总是我有错误。当用户只添加perscipritpion时,只有当我独立地将其粘贴到url中时才会有。 这是我的控制器功能:

public function deletePerscription(Request $request)
{

    $Id = $request->input('id');

    $deleteRow = Perscription::where('id', $Id)->delete();

    return redirect('/panel/visits')->with('info', 'deleted');;

}

我真的坚持这个...... :(

我无法保护我的代码......

1 个答案:

答案 0 :(得分:1)

NotFoundHttpExceptionMethodNotAllowedHttpException是不同类型的例外。在第一种情况下,当您尝试访问网址http://hospital.com/someWordWhichIsNotInRoutes时,它根本不存在并抛出NotFoundHttpException,它将为您提供404页面。但对于第二种情况,URL http://hospital.com/panel/perscriptions/add存在,但它只允许POST请求。当您尝试通过浏览器访问它时,它会发送GET请求而不是POST请求。由于您的路由不允许此路由的GET请求,因此会抛出MethodNotAllowedHttpException异常。您可以通过在Handler类中添加一个以下条件来解决这个问题。

if($exception instanceof MethodNotAllowedHttpException)
{
    // do the redirect here
}

请勿忘记导入课程use Symfony\Component\HttpKernel\Exception\MethodNotAllowedHttpException;