0

flash()CFWheels でを使用するのは非常に簡単ですが、単純なメッセージを 1 つ以上挿入する必要がある場合があります。3 つの呼び出しを行うflashInsert()と、最後の呼び出しのみが の出力に表示されますflash()

回避策として、私はこれを思い付きました:

public void function index() {

        local.messages = [];

        arrayAppend(local.messages, { message="Test message 1.", type="ok" } );
        arrayAppend(local.messages, { message="Test message 2.", type="ok" } );
        arrayAppend(local.messages, { message="Test message 3.", type="ok" } );

        flashInsert( local.messages );

        WriteDump(var=flash(), abort=true);

    }

このようにして、オブジェクト内の配列として flash() をループすることができます...メッセージにアクセスし、それぞれにキーを入力します。

しかし、あなたは何を知っていますか?これは汚い感じ!そして、必要なアクションごとにこれを繰り返すことは、この神聖な DRY 原則を破っているように思えます。

フラッシュに関してできる限り多くの関連機能を見てきましたが、この出力を達成するものは何もないようです。

また、このメッセージ オブジェクトで必要な数のキーを指定できるという利点もあります。これは、HTML の出力に役立つので便利です。

これについてあなたの考えをいただければ幸いです...

マイキー。

4

2 に答える 2

0

やりたいことが組み込まれているものは見つかりませんでしたが、独自のソリューションを開発しました。

ここに潜在的な問題があるかどうかはわかりませんが、うまく機能しているようです。このようにすることについて人々の意見を得ることができればうれしいです。

コントローラ.cfc

component extends="Wheels" output="false" {

    messages = [];

    public any function init() { }


    public void function addMessage(object) {

        arrayAppend(messages, arguments.object);

    }


    public void function insertMessages() {

        local.messages = messages;
        flashInsert( messages = local.messages );

        return;

    } 

}

ユーザー.cfc

component extends="Controller" output="false" {     

        public void function index() {

            super.addMessage({ message="Example message 1.", type="ok" });
            super.addMessage({ message="Example message 2.", type="info" });
            super.addMessage({ message="Example message 3.", type="error" });
            super.insertMessages();

        }

}

表示 (フラッシュをループ)

<cfset variables.flash = flash() />

<cfif not structIsEmpty(variables.flash)>

    <div id="messages">

        <cfoutput>

            <cfloop array="#variables.flash.messages#" index="variables.i">
                <p class="alert alert-#variables.i.type#">
                    #variables.i.message#
                </p>
            </cfloop>

        </cfoutput>

    </div>

</cfif>

このテクニックを使ってこれを行うという考えはありますか?

:)

于 2013-07-25T13:53:08.533 に答える