0

だから私はこれを私のrouting.ymlに入れました:

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

どちらも単独でチェックされ、有効です。組み合わせが常に有効であるとは限らないため、2 つの組み合わせを確認する必要があります。

この場合、データベース内の 2 つのオブジェクト間の関係を確認する必要があります。最初のオブジェクトは 2 番目のオブジェクトの親である必要があります。コントローラーでこれを行うことができますが、その実装はあまり好きではありません。また、複数のルートについても同じチェックが必要です。

組み合わせをチェックする別の要件を追加するにはどうすればよいですか? 呼び出されるコントローラー クラスでメソッドを定義できますか?

または、最善の解決策は次のようなものでしょうか。

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

    // ... 
}
4

2 に答える 2

0

私が行った最終的な解決策は次のとおりです。

  • すべてのパラメーターを必要とするメソッド checkRelation を追加します
  • そのメソッド内でクエリを実行して、すべてが問題ないかどうかを確認します。
  • 問題がある場合は false を返し、値が問題ない場合は true を返します。(あるいは、オブジェクトか何かを返すこともできます)
  • アクションでは、値が false かどうかを確認し、そうであれば、特定のコントローラーの一般的な「見つかりません」ページを返します。

これはすべて、最初の質問で投稿したものと非常によく似ています。

複数のコントローラーで同じ checkRelation を使用する場合、コード/ロジックの重複を防ぐために、それを (部分的に) リポジトリークラスまたは同様のものに移動することをお勧めします。

于 2013-05-31T10:02:44.163 に答える
0

あなたの質問を理解しているので、次のものが必要です。

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

Symfony2 ルーティング コンポーネントはこれをネイティブに行いませんが、拡張することができます。

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

于 2013-05-10T12:09:08.873 に答える