我需要为以下网址架构执行路由:
website.com/some-category-name
website.com/some-category-name/entryName
some-category-name将是可变的 - 类别名称
如何为此配置路由?我需要输入以前的控制器,例如:
website.com/account
website.com/regiter
并希望所有没有控制器名称(因此将是类别名称)的内容转到控制器类别。
我无法解决这个问题。
答案 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中的工作规则。
谢谢!