2016-12-21 6 views
1

機能を介して(ContentControllerの)$url_handlersを以下のように設定できますか?

public function init() { 
    parent::init(); 

    $this::$url_handlers = array(
     '' => 'index', 
     '$Project' => 'getProject' 
    ); 
} 

代わりに呼び出される関数を得るための、私は404を取得していますので、従来の方法private static $url_handlers = ...で$ url_handlers「をハードコーディング」がオンのとき、コードが正常に動作し、関数が呼び出されるのに対し、私は、聞いていますのよ。

答えて

4

$url_handlersプロパティは、実際にはSilverStripe用語でconfiguration propertyです。つまり、キャッシュマニフェストをフラッシュすると、設定が再構築されキャッシュされます。

あなたinitからそれを更新することができますが、理由はあなたのinit方法が既に解析されたコンフィギュレーション・マニフェストと呼ばれている時間によって、the configuration APIを使用してそれを実行する必要があります。このため、self::$url_handlersプロパティを変更しても効果はありません。

ここで例を示します。参考

public function init() 
{ 
    parent::init(); 

    Config::inst()->update(
     __CLASS__, 
     'url_handlers', 
     array(
      '' => 'index', 
      '$Project' => 'getProject' 
     ) 
    ); 
} 

RequestHandler::findAction定義$url_handlers値の構成のマニフェストを調べhere's the point

関連する問題