Yii路由 - 如何放置该控制器

时间:2015-07-03 09:43:04

标签: php yii routing

我需要为以下网址架构执行路由:

website.com/some-category-name
website.com/some-category-name/entryName

some-category-name将是可变的 - 类别名称

如何为此配置路由?我需要输入以前的控制器,例如:

website.com/account
website.com/regiter

并希望所有没有控制器名称(因此将是类别名称)的内容转到控制器类别。

我无法解决这个问题。

2 个答案:

答案 0 :(得分:0)

使用

'urlManager' => array(
        'urlFormat' => 'path',
        'showScriptName' => false, 
        'rules' => array(
            'categoryName/<categoryName:\w+>' => array('site/category'),
            'register' => array('site/register'),
            'account' => array('site/account')
        ),
    ),

答案 1 :(得分:0)

首先,您必须声明&#34;非类别&#34;的所有规则。动作,以及动态规则(与类别和antry相关)之后:

'urlManager' => array(
    'urlFormat' => 'path',
    'showScriptName' => false, 
    'rules' => array(
        // for example if your account and register actions in user controller
        // ... you can write
        'account' => 'user/account',
        'register' => 'user/register',
        // or with one rule
        '<action(account|register)>' => 'user/<action>',
        // and for all other 'static actions', such as login, logout ...

        // after yhat you can declire dynamic rules
        '<categoryName:\w+>' => 'category/index',
        '<categoryName:\w+>/<entryName:\w+>' => 'category/entry'
    ),
),

因此代码Yii::app()->createUrl('user/register')会生成网址website.com/register,因此网址website.com/register&#34;会转到&#34; 用户控制器的注册操作(所有其他静态规则都是这种方式)。

现在动态规则:代码

Yii::app()->createUrl('category/index', array(
    'categoryName' => 'first-category-name'
)) 

将生成网址 website.com/ 第一类名称 ,反之亦然:网址网站/ 第一类 - 姓名 &#34;转到&#34; 类别/索引操作及其中的 $ _ GET [&#39; categoryName&#39;] 参数,将等于&#34; 第二类名&#34;

相应的代码

Yii::app()->createUrl('category/index', array(
    'categoryName' => 'some-category-name',
    'entryName' => 'some-entry-name'
))

将生成url website.com/ some-category-name / some-entry-name ,在类别/条目操作中,您可以获得 $ _ GET [&#39; categoryName&#39;] 等于&#34; some-category-name &#34;和 $ _ GET [&#39; entryName&#39;] 等于 some-entry-name

我希望这可以帮助你理解Yii中的工作规则。

谢谢!