CakePHP でコンポーネントをその場でロードしたい この例では、json 応答の RequestHandler コンポーネントを動的にロードします
public function xyz() {
$this->components[] ='RequestHandler';
$this->Components->load('RequestHandler');
$this->RequestHandler->initialize($this);
$abc = array("hello","world");
$this->set('abc', $abc);
$this->set('_serialize', array( 'abc'));
}
初期化関数で生成されたエラーは未定義を示しています。
より鮮明な画像のための修正:
public function xyz() {
$this->components[] ='RequestHandler';
$this->RequestHandler = $this->Components->load('RequestHandler');
$this->RequestHandler->initialize($this);
$abc = array("hello","world");
$this->set('abc', $abc);
$this->set('_serialize', array( 'abc'));
}
私も試しました
public function xyz() {
$this->RequestHandler = $this->Components->load('RequestHandler');
$abc = array("hello","world");
$this->set('abc', $abc);
$this->set('_serialize', array( 'abc'));
}
#$this->RequestHandler->getTime(); のようなコンポーネントは使用できません。Cakephp の自動ハンドル json が応答するためです。http://disecake.localhost/resources/xyz.jsonを使用してコードのすぐ上にヒットすると
{"code":500,"url":"/resources/xyz.json","name":"ビュー ファイル " /var/www/disecake/app/View/Resources/xyz.ctp" がありません。"}
私が使うとき
public $components = array( 'RequestHandler');出力よりもコントローラーで
{"abc":["こんにちは","世界"]}
質問がより明確になったと思います。