Yii2路径格式递归URL
我的英语不好,因此我将尽可能清楚: 我在Yii2中有一个项目,它有一个高级模板,在数据库中我有一个递归表,它表示一个类别和条目树,你可以想象它是一个文件夹树,可以有无限的文档和文件夹(可以在另一个文件夹中创建一个文件夹),我用这种格式创建了url localhost://my-project/root-category/sub-cat-A/sub-cat-B/25-document 我需要获取当前Url的最后一部分,因为整个Url在Url最后一部分的条目之前可以有N个级别,格式如下:Yii2路径格式递归URL,url,recursion,yii2,yii2-advanced-app,yii2-basic-app,Url,Recursion,Yii2,Yii2 Advanced App,Yii2 Basic App,我的英语不好,因此我将尽可能清楚: 我在Yii2中有一个项目,它有一个高级模板,在数据库中我有一个递归表,它表示一个类别和条目树,你可以想象它是一个文件夹树,可以有无限的文档和文件夹(可以在另一个文件夹中创建一个文件夹),我用这种格式创建了url localhost://my-project/root-category/sub-cat-A/sub-cat-B/25-document 我需要获取当前Url的最后一部分,因为整个Url在Url最后一部分的条目之前可以有N个级别,格式如下: <i
<id:\d+>-<slug:[A-Za-z0-9-_.]+>
-
但我不知道有什么Url规则可以解决这个问题
感谢你的回答
谢谢。我自己解决了这个问题,我将告诉你们如何解决,或者你们中的任何人是否可以改进这个答案: 我使用的是codemix/yii2 localeurls扩展,我的意思是我必须扩展codemix\localeurls\UrlManager类并覆盖parseRequest方法,如下所示:
public function parseRequest( $request ) {
$pathInfo = $request->getPathInfo();
$matches = 0;
$has_matches = preg_match( '%(bussiness-lines|lineas-de-negocio)\/(.)+\/%', $pathInfo, $matches );
if ( $has_matches ) {
/*
* GET THE LAST SECTION FROM THE URL
*/
$explode_patInfo = explode( '/', $pathInfo );
$tree_element = end( $explode_patInfo );
/*
* SEPARATES THE ID AND THE SLUG FROM THE URL
*/
$tree_element_explode = explode( '-', $tree_element );
$tree_element_id = reset( $tree_element_explode );
unset( $tree_element_explode[0] );
$tree_element_slug = implode( '-', $tree_element_explode );
/*
* RETURN THE CONTROLLER/ACTION AND ITS PARAMS TO PROCESS THE REQUEST
*/
if ( $tree_element !== false ) {
return [
'site/get-tree-element',
[
'id' => $tree_element_id,
'slug' => $tree_element_slug
]
];
}
}
//IF THE REQUEST DOES NOT CORRESPOND TO MY CUSTOM URL RULE, LETS THE PARENT DO THE JOB
return parent::parseRequest( $request );
}
我分享这个,希望能帮助你们中的任何人
和平