0

所以我在我的 routing.yml 中得到了这个:

requirements:
    var1: \d+
    var2: \d+

两者都经过自己的检查并且有效。我需要检查 2 的组合,因为组合并不总是有效的。

对于这种情况,我需要检查数据库中 2 个对象之间的关系,第一个对象应该是第二个对象的父对象。我可以在控制器中执行此操作,但我不太喜欢这种实现。此外,我需要对超过 1 条路线进行同样的检查。

我将如何添加另一个检查组合的要求?我可以在控制器类中定义一个将被调用的方法吗?

或者最好的解决方案是:

public function indexAction($var1, $var2)
{
    $result = $this->checkRelation($var1, $var2);
    if ($result) {
        // return errorpage
        return $result;
    }

    // ... 
}
4

2 回答 2

0

因此,据我了解您的问题,您需要以下内容:

/parent/child/        --> returns 200
/not_parent/not_child --> returns 404

Symfony2 Routing 组件本身并不这样做,但您可以扩展它。

http://symfony.com/doc/master/cmf/cookbook/using-a-custom-route-repository.html

于 2013-05-10T12:09:08.873 回答
0

我采用的最终解决方案如下:

  • 添加一个需要所有参数的方法 checkRelation
  • 在该方法中运行查询以检查一切是否正常。
  • 有问题时返回 false,值正常时返回 true。(或者你可以返回一个对象或其他东西)
  • 在操作中,我检查该值是否为假,如果是,则为特定控制器返回一个通用的“未找到”页面。

总之,这与我在最初的问题中发布的内容非常相似。

在多个控制器中使用相同的 checkRelation 时,最好将其(部分)移动到存储库类或类似的东西以防止代码/逻辑重复。

于 2013-05-31T10:02:44.163 回答