Yii2动态URL路由规则 [英] Yii2 Dynamic URL Routing Rules
问题描述
我想在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屋!