[英]How can I check whether the route “URL” exists?
在Laravel 5.2中 ,是否存在检查路由是否存在的特定方法(处理程序)? 假设,对于像这样的基本网址:
http://www.example.com/laravel
然后,我想从我的主页路由器处理不存在的URL(例如: /laravel
),即:
Route::get('/{page}', funtion(){
//check if $page is a valid route URL? Or 404?
});
如何故意检查此路由是否有效?
只需输入Route::get('/{page}','MainController@getPage');
持续。 这样,如果它在使用它之前找到了另一条路由,但是如果没有找到,它将被此路由捕获。 例如:
Route::get('/welcome','WelcomeController@getWelcome');
Route::get('/test','TestController@getTest');
Route::get('/{page}','MainController@getPage');
如果您要打/welcome
或/test
,则应将其路由到正确的控制器。 如果您在哪里打/hello
,则应转到MainController
并打函数getPage($page)
其中$page
是您打的页面。
如果它MainController@getPage
您就知道它基本上是404。
如果您出于某种原因在上路线之前需要知道,可以创建以下内容:
Route::get('/checkurl/{page}',function($page) {
$exists = Route::has('/' . $page);
return (new Response(json_encode(['exists'=>$exists]),200);
});
我将以下内容用作我的最后一条路线:
Route::any('{catchall}', function($page) {
abort(404);
} )->where('catchall', '(.*)');
如果您还不知道,则abort(404)
将从resources/views/errors
返回视图404.blade.php
。
在laravel 5.5.1+中不再添加任何捕获的最后一条路线
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.