您好,我的项目分为两部分:前端网址和后端网址。后端网址就像$obj= json_decode($return);
$appId = $obj->allresponses->app_id;
echo $appId;
,前端网址就像base-url/admin/pagename
。
我想创建一些动态页面。网址名称来自数据库。
这是base-url/pagename
文件的路线:
web.php
这是我的控制器
Route::any('{slug}', 'PageController@show');
不知何故,我想避免考虑以public function show($slug = null)
{
if('admin' != $slug){
$page = Pages::where('route', $slug)->where('active', 1);
$page = $page->firstOrFail();
return view($page->template)->with('page', $page);
}
}
开头的每个网址。我想知道我是否可以从baseurl/admin/
开始。如果有,怎么样?
答案 0 :(得分:0)
首先定义所有静态路由以获取优先级问题。然后在最后用一些正则表达式
定义你的任何路线Route::any('{slug}', 'PageController@show')->where('slug', '^[a-zA-Z0-9-]*$');
这告诉网址只允许使用字母数字和短划线-
。所以任何带正斜杠的网址都不会起作用。
/my-first-page-1 --> should work
/my/first/page/2 --> shouldn't work
这样你知道baseurl/admin/
永远不会有效。您可以在线搜索更多正则表达式。
答案 1 :(得分:0)
试试这个:
Route::any('/base-url/admin/{slug}', 'SomeController@someMethod');
Route::any('{slug}', 'PageController@show');
laravel路由从上到下匹配,当它找到第一个匹配时它将停止,因此首先定义的路由优先于后面定义的路由,在这种情况下,第一个路由将匹配任何以{{{}开头的url请求。 1}},第二条路线将匹配其他所有路线。
您只需要将/base-url/admin/
替换为负责该功能的控制器