Symfony 2:路线要求正确使用

时间:2016-11-16 09:46:32

标签: php symfony

使用Symfony 2,我想知道route requirements的以下用法是否正确,还是应该专用于特定的正则表达式?

#routing.yml

fbn_guide_articles:
    path:  /{articles}
    defaults: { _controller: FBNGuideBundle:Guide:articles }
    requirements : 
        articles : infos|restaurants|winemakers|events|tutorials|shops

在控制器级别可以有以下替代方案:

#routing.yml

fbn_guide_articles:
    path:  /{articles}
    defaults: { _controller: FBNGuideBundle:Guide:articles }
class GuideController extends Controller
{
    private static $articlesEntities = array(
        'infos' => 'Info',
        'restaurants' => 'Restaurant',
        'winemakers' => 'Winemaker',
        'events' => 'Event',
        'tutorials' => 'Tutorial',
        'shops' => 'Shop',
    );

    public function articlesAction($articles)
    {
        if (!array_key_exists($articles, self::$articlesEntities)) {
            throw $this->createNotFoundException();
        }

        // Do the stuff
    }
 }

感谢。

1 个答案:

答案 0 :(得分:0)

路线的要求是一种更“声明”的方式来做同样的事情,但这比控制器动作更早。

因此,如果您的路由逻辑不太复杂,那么这是一个很好的解决方案。在这种情况下,在控制器中实现相同的过程只是已经测试并且工作正常的框架函数的重复。