Yii URL 管理器创建一个带有多个可选参数的路由
Yii URL Manger create a route with multi optional parameters
我有一个带有多个可选参数的 URL 规则,它可以正常工作,但在我从 Yii 1.1.15 升级到 1.1.19 后它停止了。
const OPTIONAL_PARAMS = '(/<featured:featured>)?'
. '(/subType/<subType:.*?>)?'
. '(/type/<type:\d+>)?'
. '(/category/<category:.*>)?';
'<lang:(en|fr)>/reports'. OPTIONAL_PARAMS => 'reports',
谁能给我一些想法或者有人遇到过类似的问题?
P.S。其他 URL 管理器规则工作正常,只有带有 (SOME_CODE)?
可选参数的这个规则不起作用。我正在使用 PHP 5.6 和 Apache。
您可能对 this issue 感兴趣。但简而言之:这种语法(命名参数之外的正则表达式)从未得到官方支持,它在 Yii 1.1.17 中作为错误修复被删除。
最后一个支持这个的版本是1.1.16,但它真的很旧,我不建议使用它。对于这种特殊情况,您可能应该创建自定义 UrlRule 并使用它而不是 CUrlRule
。
您也可以尝试在模式末尾添加 /*
,如下所示:
'<lang:(en|fr)>/reports/*' => 'reports',
这将允许将 GET 参数附加到 URL 作为 /key/value
。所以这个:
$this->createUrl('reports', [
'type' => 'sometype',
'category' => 'somecategory',
'lang' => 'en',
]);
将创建 URL 如:
/en/reports/type/sometype/category/somecategory
我有一个带有多个可选参数的 URL 规则,它可以正常工作,但在我从 Yii 1.1.15 升级到 1.1.19 后它停止了。
const OPTIONAL_PARAMS = '(/<featured:featured>)?'
. '(/subType/<subType:.*?>)?'
. '(/type/<type:\d+>)?'
. '(/category/<category:.*>)?';
'<lang:(en|fr)>/reports'. OPTIONAL_PARAMS => 'reports',
谁能给我一些想法或者有人遇到过类似的问题?
P.S。其他 URL 管理器规则工作正常,只有带有 (SOME_CODE)?
可选参数的这个规则不起作用。我正在使用 PHP 5.6 和 Apache。
您可能对 this issue 感兴趣。但简而言之:这种语法(命名参数之外的正则表达式)从未得到官方支持,它在 Yii 1.1.17 中作为错误修复被删除。
最后一个支持这个的版本是1.1.16,但它真的很旧,我不建议使用它。对于这种特殊情况,您可能应该创建自定义 UrlRule 并使用它而不是 CUrlRule
。
您也可以尝试在模式末尾添加 /*
,如下所示:
'<lang:(en|fr)>/reports/*' => 'reports',
这将允许将 GET 参数附加到 URL 作为 /key/value
。所以这个:
$this->createUrl('reports', [
'type' => 'sometype',
'category' => 'somecategory',
'lang' => 'en',
]);
将创建 URL 如:
/en/reports/type/sometype/category/somecategory