0


私はcakephpが初めてです。
アプリのユーザーが通知メールを送信するか、フラッシュ メッセージを送信しないかを選択できるようにする方法があるかどうかを知る必要があります。

私はすでにそれをグーグルで検索しましたが、答えが見つかりませんでした...この方法はほぼすべてのアプリケーションで使用されているため、奇妙に聞こえます...

何かのようなもの:

    $this->setFlash('Do you wish to send a notification email?', //yes or no);

    //and if the choice is 'Yes'
    $this->sendEmail();

ありがとう!

4

1 に答える 1

1

私が理解している限り、ケーキのフラッシュは通知目的のためだけです。
しかし、私はjavascriptを使用してそれ(または同様のこと)を行うことができました。

ビューから、フラッシュ div に「はいまたはいいえ」ボタンを追加する関数を追加し (firebug などで ID をチェックしてください)、これらのボタンを実際にメッセージを送信する ajax 呼び出しにバインドできます。

何かのようなもの

<script>
$(function() {
    $('#div_of_the_flash_msg'.append('<div id="yes-button">Yes</div> or 
                                      <div id="no-button">No</div>));

    $('#yes-button, #no-button').on('click', function() {
        $.ajax(/*parameters for the ajax call to the controller with the $this->sendEmail() action*/);
     });
});
</script>

これは私がそれらのケースに対して行ったことですが、それが最善の方法であると100%確信することはできません...

クラスのような新しい種類のフラッシュメッセージを作成しflash_send_email、そのコンストラクターで、それぞれのjavascriptを使用してボタンが既に定義されているため、上記のフラッシュメッセージを設定すると、次のようになります

$this->Session->setFlash('Do you wish to send a notification email?', 'flash_send_email');

flash_send_email.ctp (Views の Elements フォルダー内) は次のようになります。

<div class="your-class">
    <?php echo $message //that's the message you send by parameter on the controller?>
    <div id="yes-button">Yes</div> or <div id="no-button">No</div>
</div>
<script>
      //same script as above to handle the click situations
</script>

繰り返しますが、2 番目のアプローチは試していませんが、基本的には同じことですが、そのようなメッセージを複数のビューで表示したい場合は、もう少し再利用可能です。

以上のことから、フラッシュメッセージは通知目的でのみ使用する必要があると私はまだ信じています。ユーザーとのその他のやり取りは、カスタム div、ポップアップなどによって行うことができます。考えてみてください。これ。

于 2013-04-18T15:01:03.727 に答える