1

わかりました、主題は意味がないので、ここでそれをよりよく説明しようとします。

ZendFrameはここで使用されています。そして、テンプレートを構成する「top.phtml」に含まれているビューに変数を渡す際に問題が発生しました。私がやろうとしているのは、ブレッドクラムの概念を実装することです。パンくずファイルは、コンテンツビューファイルの前にtop.phtmlに含まれています。したがって、breadcrumbファイルに関する限り、breadcrumb変数は定義されません。

コントローラビュー内のブレッドクラムの設定の配列をprint_rできますが、問題はないので、機能していることはわかっています。特に、そのビューより上のものは、変数を取得できません。だから私が答えようとしているのは、概念が似ているものの全体的なスキームに変数を渡すことをやめる手段があるということだと思います

$this->view->variable_name = blah;

top.phtmlと同じくらい高いものがそれを拾って使用できる場所はどこですか?

4

4 に答える 4

3

プレースホルダーを探している可能性があります。

例:

コントローラーからのプレースホルダー値の設定:

$this->view->placeholder('some_placeholder_name')->set('blah');

ビューからのプレースホルダー値の設定

$this->placeholder('some_placeholder_name')->set('blah');

ビュースクリプトまたはレイアウトでプレースホルダー値を取得する:

$value = $this->placeholder('some_placeholder_name');

プレースホルダーのコンテンツは、アプリケーションの実行の終わりに向かってレンダリングされるため、コントローラーで設定された値は、トップレベルのtop.phtmlビュースクリプトで使用できる必要があります。

于 2012-08-09T23:03:17.433 に答える
1

私はこれがうまくいくと思います:

$this->layout()->breadcrumbs = ...

そして$this->layout()->breadcrumbs、top.phtmlに印刷します。

于 2012-08-09T22:56:45.073 に答える
1

で作業するために何時間も送った後、私はついに諦め、varsをパーシャルに渡すための修正をハッキングしました:placeholder()partialLoop()

$vars = (array) $this->getVars();
foreach ($this->rows as $row) {
    $partialVars = array(
        'row' => $row,
        'vars' => $vars,
    );
    echo $this->partial('row.phtml', $partialVars);
}

醜いですが、うまくいきました。

于 2012-08-09T23:08:46.493 に答える
0

私に手がかりを与えてくれたすべての人に+1しましたが、上記のどれも私の好意でうまくいきませんでした。しかし、それらすべての間で、彼らは私を私の答えを見つけることに導きます。

Zend_Registry

私のコントローラーで、配列を作成し、次のようにZend_Registryに渡しました。

    $breadArray = array(
        array("icon"=>"i_robot", "href"=>"systems/"),
        array("href"=>"metrics","text"=>"Metrics")
    );
    Zend_Registry::set('breaded_crumbs', $breadArray);

次に、使用したコンテンツとビューの前にロードされる私のbreadcrumb.phtmlで

print_r(Zend_Registry::get('breaded_crumbs'));

それが機能しているかどうかを確認するために、そしてそれは私に配列を与えたので、将来、ビュー自体の外に変数を拡張しようとしている人にとっては、レジストリが行く方法のようです。プレースホルダーとレイアウトを試してみましたが、どちらも何かではないというエラーが発生しました。それらを部分的に機能させると、期待したものが得られませんでした。

于 2012-08-09T23:44:55.943 に答える