【问题标题】:skipping controller name from URL in symfony 1.4在 symfony 1.4 中从 URL 中跳过控制器名称
【发布时间】:2012-10-19 05:10:54
【问题描述】:

我在 symfony 1.4 中有一个现有项目

对于静态页面,我们使用提供以下 URL 的模块页面:

http://www.example.com/page/aboutus
http://www.example.com/page/faq
http://www.example.com/ (page/index method, points to method page/home)

对于新的需求,我们需要以下格式的 URL:

http://www.example.com/aboutus
http://www.example.com/faq
http://www.example.com/  (index/home method of page module; working as page is default module)

有 16 个这样的静态页面,都列在page 模块下。到目前为止,我计划创建 16 个新模块,并将每个静态页面放在新模块的 index 方法中,但我认为这是一个糟糕的解决方案,希望 symfony 绝对不是为这种方式设计的。

有没有办法从 URL 中跳过模块名称,至少对于默认模块?

【问题讨论】:

    标签: php symfony1 symfony-1.4


    【解决方案1】:

    您可能想要使用重写规则,如 http://corz.org/serv/tricks/htaccess2.php

    【讨论】:

    • 感谢 WFahl。 URL 重写绝对是其他解决方案,比创建 16 个模块要好得多。我肯定会更喜欢超过 16 个模块。但是,如果 symfony 中对此有任何内置支持,我感到很惊讶? Codeigniter 提供了从 URL 中跳过控制器/模块名称的支持(不确定其他框架),这是非常常见的要求,我希望 symfony 也必须有一些内置支持。 +1 建议 mod-rewrite 解决方案。如果 symfony 1.4 中没有内置支持从 URL 中跳过模块名称,我会接受这个答案。
    【解决方案2】:

    使用symfony的路由功能!

    routing.yml:

    aboutus_page:
      url:   /aboutus
      param: { module: page, action: aboutus }
    
    faq_page:
      url:   /faq
      params: { module: page, action: faq }
    
    home_page:
      url:   /
      params: { module: page, action: index }
    
    # your other routes
    # ...
    

    page 模块的 actions.class.php 如下所示:

    class pageActions extends sfActions
    {
       public function executeAboutus (sfWebRequest $request)
       {
          // ...
       }
    
       public function executeFaq (sfWebRequest $request)
       {
          // ...
       }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-08-04
      • 1970-01-01
      • 2011-03-11
      • 2013-08-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-17
      相关资源
      最近更新 更多