如何在Yii2中管理客户的多个网址?

时间:2015-07-28 15:25:52

标签: yii2 yii-url-manager

我正在尝试以不同的方式将url集成到多个控制器/操作中。假设我有两个控制器站点和产品控制器。我希望得到通信控制器的值,同时在url中传递不同的参数。我的意思是当我传递slug参数时,它必须从站点/页面获取,当我传递category参数时,它必须从product / view中获取。

            '<category:>/<id:>' => 'product/view',
            '<category:>' => 'product/view',
            '<slug:>' => 'site/pages',

我已经尝试过以上示例,它适用于类别,但在slug上发生404错误。

修改

这就是我的其余任务的外观。

产品控制器操作

public function actionView($category, $id= null)
{        
    $category = Category::findOne(['slug' => $category]);
    // rest of work
}

这是我的createUrl产品参数

Yii::$app->urlManager->createUrl(['/product/view','category'=> 'handicraft-product', 'id'=> 'nepali-thanka-134']);

我只是想像这样访问这个动作 http://www.example.com/handicraft-producthttp://www.example.com/handicraft-product/nepali-thanka-134

站点控制器操作

public function actionPages($slug)
    {        
        $model = $this->findByPageSlug($slug);
        return $this->render('pages',['model' => $model]);
    }

这是我的createUrl params for site's pages action

Yii::$app->urlManager->createUrl(['/site/pages','slug' => 'terms-and-condition']);

这就是我想要访问此操作的方式 http://www.example.com/terms-and-condition

如何解决此问题? 提前致谢。

1 个答案:

答案 0 :(得分:1)

2个选项:
1)使URL略有不同。您可以像这样定义它们:

'category/<category:>' => 'product/view',
'page/<slug:>' => 'site/pages',

根据您定义链接的方式,它们可能实际上有助于您的搜索引擎优化 2)创建自定义URL管理器规则以处理页面和类别的文本。看这里: http://www.yiiframework.com/doc-2.0/guide-runtime-routing.html#creating-rule-classes

在自定义规则中,您可以尝试查找类别网址,如果不能,则默认使用网页网址。