2

今日、SS 3.0 から 3.1 にアップグレードしましたが、更新後、システムが拡張機能の _config フォルダーにある routes.yml ファイルを検出していないようです。myextension/_config/routes.yml ファイルの例を次に示します。

---
Name: pusherroutes
After: 
  - '#rootroutes'
---
Director:
  rules:
    # handle old 2.4 style urls
    'pusher/$Action': 'PusherController'

また、コントローラー アクションをホワイトリストに登録するために、allowed_actions を static に設定しました。

class PusherController extends Controller {
    public static $allowed_actions = array (
    'ChatAuth',
    'SendMessage',
    'NotifyAuth'
    );
}

mysite.com/pusher/SendMessage に移動すると、システムがコントローラーのアクション メソッドに誘導しなくなりました。私のネットワーク タブに返される応答は、Silverstripe の開始ページです。

4

1 に答える 1

3

これは、$Actionパラメーターが 2 回一致しているためです。初期pusher/$Actionルートが一致すると、URL の最初の 2 つの部分が一致の一部として消費されます。次に、コントロールがオブジェクトに渡されますPusherController。次に、URL をアクションに再度一致させようとしますが、解析する URL が残っていないため、アクションが存在しないと判断し、indexアクションにルーティングして、開始情報を表示します。

これを修正するには、次を使用します。

Director:
  rules:
    'pusher': 'PusherController'

に制御が渡されたときに実行されるアクション マッチングに依存しPusherControllerます。

于 2013-03-30T12:18:43.083 に答える