2011-06-27 9 views
4

これは難しい問題ですが、MVCモデルを壊しているとは思えません。CakePHPのコントローラからヘルパーにアクセスするには?

コントローラからモデルから取得したデータをロードしています。私はほとんどすべてのアクションでこのオブジェクトをビューに渡しています。しかし、私はそれが道になると思い

<h3><?php echo $parser->section_name($section); ?></h3> 

:私は、ヘルパーからこのデータを処理していると私は、オブジェクトを引数として渡している:

コントローラ:

$this->('section', $section); 

はヘルパーをパーサーヘルパーの内部で$sectionオブジェクトをプライベート変数として渡すことができれば良いです。私は、各ビューの1行目にこれを行うことができます:

$parser->section_object = $section; 

そして、それぞれのパーサ方法は、質問がある

function section_name(){ 
    return $this->section_object['Section']['name']; 
} 

のようになります。は、コントローラからこれをautomatizateする方法はありますか?コントローラはヘルパーにアクセスすることはできませんので、私はコントローラからヘルパーを作成し、そこにローカル変数を設定してみました:

function beforeFilter(){ 
    $section = $this->Section->getOne(); 
    App::import('Helper', 'Parser'); 
    $ParserHelper = new ParserHelper(); 
    $ParserHelper->section_object = $section; 
    $this->set('parser', $ParserHelper); 
} 

しかし、ヘルパーが他のヘルパーが含まれている場合、彼らはロードされず、ヘルパーは多くのエラーを引き起こします。

ありがとうございました。

+0

同様の質問:あなたのヘルパーはHtmlHelperのを使用している場合たとえば、あなたのような何かをしなければなりません質問/ 6450519/cakephp-how-to-use-a-helper-in-a-controller)* –

答えて

2

ヘルパーが使用するヘルパーを手動で作成する必要があります。 (http://stackoverflow.com/ - * [?コントローラでヘルパー関数を使用する方法のCakePHP]:

App::import('Helper', 'Html'); 
$ParserHelper->Html = new HtmlHelper(); 
関連する問題