【问题标题】:Make a controller indexcontroller in yii在 yii 中制作一个控制器 indexcontroller
【发布时间】:2013-08-13 03:14:12
【问题描述】:

我打算在 yii 上做一个博客。我有一个名为 article 的表,其对应的模型、视图、控制器是使用 gii 生成的。我想让帖子显示在首页所以我设置了

defaultController='article'

虽然主页显示帖子,但当我点击标题阅读更多时,网址中仍然有控制器名称,如

www.yiisite.com/article/1

所以我希望网址变成这样:

www.yiisite.com/1

我想在我的 URL 中隐藏控制器名称。

常规的实现方法是什么?

我想让 url seo 友好,所以我使用了以下规则:

'/<year:\d{4}>/<month:\d{2}/<vanity:[\w\W]+>'=>'article/view' 

现在在 ArticleController 中的 loadmodel() 中,我希望更改 findByPk($id) 以使用年、月和唯一的虚 url 获取数据。所以我会得到像 www.yiisite.com/2013/07/vanity-url-article 这样的网址。

这种方法没问题吧?

【问题讨论】:

    标签: php yii yii-routing


    【解决方案1】:

    在站点配置上更新urlManager

    return array(
     'name'=>'My Project',
     'defaultController'=>'article',
     'components'=>array(
       'urlManager'=>array(
         'urlFormat'=>'path',
         'caseSensitive' =>true,
         'showScriptName'=>false,
         //'useStrictParsing'=>true,
         'rules'=>array(
           '<action:[\w\-]+>' => 'article/<action>',
         ),
       ),
      ),
    );
    

    【讨论】:

    • 在控制器中通过编辑$this->render来实现这个不是常规方式吗???路由是不是更好的方式???
    • 此答案中显示的配置对您有用吗?顺便说一句,您不应该在 CController 上编辑渲染。
    • 它确实有效,而我使用的是:'/'=>'article/view' which works
    • 我想在博客中制作这样的网址,所以我使用了以下规则:'//'=>'article/view' 现在在加载模型中,我希望更改 findByPk($id) 以使用年、月和唯一的虚 url 获取数据。所以我会得到像 www.yiisite.com/2013/07/vanity-url-article 这样的 url 这种方法没问题吧?
    • 是的,没关系。只是我无法得到它,因为它超出了您的问题范围。我的回答只关注如何解决有关隐藏控制器名称的原始问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多