我的问题是我无法编写代码,工作视图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');;
}
我真的坚持这个...... :(
我无法保护我的代码......
答案 0 :(得分:1)
NotFoundHttpException
和MethodNotAllowedHttpException
是不同类型的例外。在第一种情况下,当您尝试访问网址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;