Yii2动态URL路由规则 [英] Yii2 Dynamic URL Routing Rules

查看:742
本文介绍了Yii2动态URL路由规则的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想在yii2的Cms页面中为URL设置Dynamic Routing. 当我添加Cms页面时,我将添加页面别名aboutus,faq,management等,这些别名将保存在db中.

I want to set Dynamic Routing for url in Cms pages in yii2. When i add Cms page i will add page alias aboutus,faq,management etc , these alias will saved in db .

当我将网址规则设为静态时,它将起作用,[检查下面的代码]

When i give URL rule static it will work ,[check code below]

'urlManager' => [               
            'showScriptName' => false,  
            'enablePrettyUrl' => true,  
            //'enableStrictParsing' => true,
            'rules'=>array(
'aboutus'=>'cms/index/1',
'faq'=>'cms/index/2',
'termacondition'=>'cms/index/3',
'management'=>'cms/index/4',
),
        ], 

但是我想动态添加url规则.

But i want add url rule in dynamically .

我需要在yii2中的config/main.php URL规则中添加所有动态页面别名 请帮我.

I need add all dynamic page alias in config/main.php URL rule in yii2 Please help me.

推荐答案

您可以在引导过程中编辑路由规则.

You can edit you routing rules during bootstrapping process.

首先通过实现yii\base\BootstrapInterface

在您的组件目录下,创建一个名为DynaRoute.php的文件

Under Your components directory create a file called DynaRoute.php

<?php

 namespace app\components;

 use Yii;
 use yii\base\BootstrapInterface;
 use app\models\Cms;  // assuming Cms is the Model class for table containing aliases
 class DynaRoute implements BootstrapInterface
 {
     public function bootstrap($app)
     {

        $cmsModel = Cms::find()
            ->all(); // customize the query according to your need
        routeArray = [];
        foeach($cmsModel as $row) { // looping through each cms table row
            $routeArray[$row->alias] = 'YOUR_ORIGINAL_URL'; // Adding rules to array on by one
        }
        $app->urlManager->addRules($routeArray);// Append new rules to original rules
}     

}

现在在配置文件(配置文件夹中的web.php)在$config数组中,在引导程序选项下添加上述类

Now in your configuration file (web.php in config folder) in $config array add above class under bootstrap option

'bootstrap' => [
    .... // other bootstrap options 
    'app\components\DynaRoute', // add this line 
],

这篇关于Yii2动态URL路由规则的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆