symfony1.2でのカスタムタスク
標準ではtask上でsfContextを使えないので、
executeメソッド内で
sfContext::createInstance($this->configuration);
とかやっていたのですがこのままでは使えない状況が…。
CLIからtaskを実行する分にはこれでいけるのですが、
actionなどからtaskをrunする場合はこれだと
Catchable fatal error: Argument 1 passed to sfContext::createInstance() must be an instance of sfApplicationConfiguration, instance of ProjectConfiguration given
っていうエラーが表示されてしまいます。
ようはエントリポイントのPHPでもう既にcreateInstanceしているからダメということですね。
sfContextのメソッドを調べてみるとhasInstanceというメソッドを発見。
なので上記の一行を
if(!sfContext::hasInstance()) sfContext::createInstance($this->configuration);
に変えてあげると無事エラーは表示されなくなりました!!
こういう情報ってあんまりWeb上にないのでソース読むしかないんですよね。
こういう細かいところで躓くことが多いsymfony1.2なのですが、
情報がやっぱ少ないなぁ…。
sfForm周りとかも。。。
まあ、自分で調べて分かったことはここにボチボチ書いていこうかと思っています。