2

Silverstripe には、コントローラーを適切なアクションに誘導する方法が少なくとも 4 つあります。

  1. Controller::handleAction()
  2. Controller::handleRequest()
  3. Controller::allowed_actions
  4. Controller::url_handlers

Controller::allowed_actionsとの概念を理解しController::handleAction()ています。これらを使用して、実行するアクションを定義できます。次に、url_handlersコントローラーにいくつかのルールを追加するために配列が使用されているようです。

コントローラーでどの配列/関数をいつ使用する必要がありますか? Controller::handleRequest()この機能はいつ、どのように使用すればよいですか? そして、異なるアプローチを使用することの違いは何ですか?

これまでのところ、このトピックについて多くのことを読んでいますが、各投稿では上記の可能性のいずれかについて言及しているだけで、方法が比較されることはありません...

ここに私が見つけた投稿のリストがあります:

4

1 に答える 1

1

コントローラー アクションを作成する最も簡単な方法は、allowed_actions と対応するメソッドを使用することです。

static $allowed_actions = array(
    'myaction'
);

function myaction() {
}

url_handlers を使用すると、より多くの URL パターンを定義でき、制御を Form や FormField などの別の RequestHandler オブジェクトに委任できます。これは、GridField 詳細フォームなどの URL 処理がどのように処理されるかです。

handleRequest() または handleAction() をオーバーライドする必要はありません。

  • handleRequest() は url_handlers を解析する関数です
  • handleAction() は、上記の例の「myaction」などのメソッドを呼び出します

これで問題が少し解決することを願っています。

于 2012-10-14T23:05:33.780 に答える