Url中的多个类别

时间:2016-09-01 07:22:35

标签: yii2

我想创建类似的链接:

http://example.com/cat1/itemname-1

http://example.com/cat1/cat2/itemname-2

http://example.com/cat1/cat2/cat3/itemname-3

http://example.com/cat1/cat2/cat3/[..]/cat9/itemname-9

如何在yii2 UrlManager中查看规则以及如何为此创建链接?

Url::to([
    'param1'    => 'cat1',
    'param2'    => 'cat2',  
    'param3'    => 'cat3',
    'slug'      => 'itemname',
    'id'        => 3
]);

以上代码对于多类别参数非常糟糕。 我补充一点,重要的只是最后一个参数,它意味着ID。

控制器看起来像这样:

public function actionProduct($id)
{
    echo $id;
}

1 个答案:

答案 0 :(得分:0)

下面的网址规则是这个技巧,但你必须使用控制器中的类别构建“slug”:

List<T>

生成网址:

'rules' => [
    ['route' => 'module/controller/product', 'pattern' => '<slug:(.*)+>/<id:\d+>', 'encodeParams' => false],
]

输出结果为:

yii\helpers\Url::toRoute(['/module/controller/product', 'slug' => 'cat1/cat2/cat3', 'id' => 1])