0

YIIフラッシュを使用すると、これを行うことができます。

Yii::app()->user->setFlash('success', "Data saved!");

ただし、フラッシュがページに表示されると、次のように表示されます。

<div id="yw1">
  <div class="alert in alert-block fade alert-info"><a class="close" data-dismiss="alert">×</a>
     MESSAGE
  </div>
</div>

これが配置される場所を制御するにはどうすればよいですか?これを制御するlayouts/main.phpには何も表示されませんが、表示されますか?

4

3 に答える 3

4

電話をかけない限り、どこにも表示されません。Yiiのデフォルトアプリの良い例は、サイト/連絡先ビューです。

<?php if(Yii::app()->user->hasFlash('contact')): ?>    
    <div class="flash-success">
        <?php echo Yii::app()->user->getFlash('contact'); ?>
    </div>    
<?php else: ?>
    ...

そして、フラッシュはsetFlashメソッドを使用して設定されます

Yii::app()->user->setFlash('contact','Thank you for contacting us. We will respond to you as soon as possible.');

可能性としては、Controllerルートクラス(protected / components / Controller.php)にチェックがあり、誰かがinit()それらをチェックする関数を作成した可能性があります。これは、すべてのコントローラー/アクション呼び出しで呼び出されるため、そこにある可能性があります。

もう1つの可能性は、プロジェクトを作成した人がフレームワークフォルダーのflashメソッドを編集した(または拡張した)場合は、framework / web / auth/CWebUser.phpにあります。

しかし、Mikが言ったように、プロジェクトでgetFlashまたは単にflashのテキスト検索を実行してみてください

于 2012-12-09T21:40:56.000 に答える
1

私はあなたのviewsフォルダのuser->getFlashes()でテキスト検索をします。これでどこにでもメッセージを出力できます

<?php
    foreach(Yii::app()->user->getFlashes() as $key => $message) {
        echo '<div class="flash-' . $key . '">' . $message . "</div>\n";
    }
?>
于 2012-12-09T19:16:20.237 に答える
0

開発者であるあなたは、フラッシュメッセージを表示する必要があります。Yiiはあなたのためにそれをしません。

EskimoとMikが示すように、自分で選択した場所にそれらをビューで表示します。Yiiはビューのレイアウトを知らないため、Yiiはそれを行うことができませんでした。

于 2012-12-09T22:20:50.057 に答える