2009-04-28 2 views
1

CakePHPバージョン1.2(最新)を使用して簡単なWebアプリケーションを作成していて、Sessionヘルパーからのフラッシュメッセージの表示に問題があります。次の要素をレンダリングする

<?php echo $this->renderElement('flash'); ?> 

:私のレイアウトでは、次のコードが存在する

望ましい行動がフラッシュメッセージがあるかどうそれはで表示されていることが、表示されるように、ということである
<?php if($session->check('Message.flash')): ?> 
    <?php $class = isset($error) ? 'contentError' : 'contentSuccess'; ?> 
    <div class="contentBlockWrapper <?php echo $class; ?>"> 
     <div class="contentBlock"> 
      <div id="flashMessage" class="flash"> 
       <?php $session->flash(); ?> 
      </div> 
     </div> 
    </div> 
<?php endif; ?> 

DOM内の上記の場所は、私が望むようにスタイル付けされ、配置されるようにします。

フラッシュメッセージがある場合、CakePHPはオープニング<body>タグの直後にレンダリングしています。今度は、上記のコンテナを正しい場所にレンダリングしますが、必要な場所にテキストを書き込むことはありません。

出力バッファをビュー内の変数にフラッシュしてエコーしてみましたが、役に立たなくなりました。いくつかの人々は、表示させたい特定のメッセージを示すために名前付きキーを使用しようとしましたが、表示したいテキストが間違った場所に表示されているため、ここでは適切ではありません。

感謝します。ありがとう!

+0

要素をレンダリングする呼び出しをどこに置いても、ケーキは常にbodyタグの直後に置くと言っていますか?私のアプリでは、$ session-> flash呼び出し(DOM内で生成されたソースを見て)があるところならどこでもレンダリングします。 レイアウトで正しいと思いますか?レイアウトビューを投稿しますか(bin.cakephp.orgを使用してリンクを残してください)。 ありがとう! –

+0

私は、ビュー自体の中でなく、要素に全体が混乱しているのかもしれないと思っています。私は要素からそれを移動し、それが動作するかどうかを見てみましょう - フィードバックに感謝! – inkedmn

答えて

1

は、私はあなたがおそらくフラッシュがレンダリングされ、クリアされているので

$session->flash(); 

を言うあなたのレイアウトの残りを持っていると思います。これがあなたの要素にレンダリングされない理由です。

~/app/views/layouts/default.ctp(またはデフォルトを使用していない場合はその他)を確認し、役立つかどうかお知らせください。

1

コントローラでsetFlash()を呼び出すときに翻訳機能を使用した場合は、2番目のパラメータとして「true」が渡されていることを確認してください。同様に:

$ this-> Session-> setFlash(__( 'My Message Here'、TRUE));

それ以外の場合、メッセージはエコーされ、返されません。ページのHTMLコードの前に表示され、setFlashに送信されるメッセージは定義されていないため、予期した場所には表示されません。

関連する問題