3

特定のアクションメソッドで一度だけ必要だったので、以下のように追加したくありません

(無駄にメモリをロードしないでください)

class UsersController extends AppController {
    var $name = 'Users';
    var $helpers = array('Html', 'Session');
    var $components = array('Session', 'Email');

4

3 に答える 3

7
class UsersController extends AppController {
  public function method_name() {
    $this->helpers[] = 'MyHelper'
  }
}

詳細については、ドキュメントを参照してください。

それが役立つことを願っています。

于 2010-11-08T16:58:49.767 に答える
0

その場でヘルパーとコンポーネントを追加するためにコンポーネントを使用します。

$this->Common->addHelper('Tools.Datetime');
$this->Common->addHelper(array('Text', 'Number', ...));
$this->Common->addComponent('RequestHandler');
$this->Common->addLib(array('MarkupLib'=>array('type'=>'php'), ...));

これに対する完全なコードは、私が開いた Cakephp 拡張チケットで見ることができます: http://cakephp.lighthouseapp.com/projects/42648-cakephp/tickets/1277

または PHP マークアップを使用: http://www.dereuromark.de/2010/11/10/loading-classes-on-the-fly/

また、mtnorthrop によって投稿されたソリューションの小さな問題も修正されています。プラグインと渡されたオプションが可能になりました。楽しむ。

于 2010-11-08T22:53:41.130 に答える
0

を使用してヘルパーをロードできます

$this->helpers[] = 'MyHelper';

ロブが上で述べたように、これはコントローラーでは機能しません。コントローラーが機能するためには、初期化メソッドと起動メソッドを呼び出す必要があるためです。

コントローラーアクション内にコンポーネントをロードするためのコードを Web で見つけました: ComponentLoaderComponent

はい、これはコンポーネントですが、それほど大きくないため、コントローラに含めても問題ありません。

それか、それを調べてコンポーネントの読み込みがどのように機能するかを確認し、独自のコントローラー アクションを記述して同じことを行うことができます。

于 2010-11-08T19:20:11.493 に答える