我不擅长英语,所以我会尽量保持清晰:
我在Yii2中有一个具有高级模板的项目,在数据库中我有一个表示类别和条目树的递归表,你可以把它想象成一个可以拥有无限文档和文件夹的文件夹树(一个文件夹)在另一个文件夹里面是可能的),我已经用这种格式创建了url;
本地主机://我的项目/根类别/子猫-A /子猫-B / 25的文档
我需要获取当前Url的最后一部分,因为整个Url在以下格式位于Url最后一部分的条目之前可以有N个级别:
<id:\d+>-<slug:[A-Za-z0-9-_.]+>
但我不知道任何可以解决此问题的Url规则。
感谢您的回答。
谢谢。
答案 0 :(得分:1)
我自己解决了这个问题,我将告诉你如何解决,或者你是否有人可以改进这个答案:
我正在使用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 );
}
我正在分享这个希望可以帮助你们任何人。
和平。