在modelglue事件中,根据条件/结果使用不同的视图文件

时间:2014-07-10 05:29:29

标签: coldfusion model-glue

以下是config文件夹中xml文件中使用的事件处理程序。

<event-handler name="survey.completioninf">
    <broadcasts>
        <message name="checkLogin">
            <argument name="role" value="suadmin,manager" />
        </message>
        <message name="getPrograms" />
    </broadcasts> 
    <results>
        <result name="NotLoggedIn" do="user.login" redirect="true" />
        <result name="NotAuthorized" do="user.notauthorized" redirect="true" />
        <result do="view.template" />
    </results>
    <views>
        <include name="body" template="survey/completioninf.cfm" />
    </views>
</event-handler>

有什么办法可以根据结果值或属性包含不同的视图文件吗?

我需要保持事件名称的一致性。

1 个答案:

答案 0 :(得分:1)

您可以为所需的每个包含创建新结果(基于结果值或属性)。如果你设置redirect =&#34; false&#34;然后它将保留在您的survey.completioninf事件名称下。基本上这个事件变成了一个过滤器,并以静默方式重定向到相应的包含。

<event-handler name="survey.completioninf">
    <broadcasts>
        <message name="checkLogin">
            <argument name="role" value="suadmin,manager" />
        </message>
        <message name="getPrograms" />
    </broadcasts> 
    <results>
        <result name="NotLoggedIn" do="user.login" redirect="true" />
        <result name="NotAuthorized" do="user.notauthorized" redirect="true" />
        <!-- Add your new results here and redirect to the desired events -->
        <result name="SurveyIsNotComplete" do="survey.ContinueSurvey" redirect="false">
        <result name="SurveyIsComplete" do="survey.CompletedSurvey" redirect="false">
    </results>
</event-handler>

<!-- You will need to create new events to handle these results -->
<event-handler name="survey.CompletedSurvey">
    <broadcasts>
        <message name="checkLogin">
            <argument name="role" value="suadmin,manager" />
        </message>
        <message name="getPrograms" />
    </broadcasts> 
    <results>
        <result name="NotLoggedIn" do="user.login" redirect="true" />
        <result name="NotAuthorized" do="user.notauthorized" redirect="true" />
        <result do="view.template" />
    </results>
    <views>
        <include name="body" template="survey/completioninf.cfm" />
    </views>
</event-handler>

<event-handler name="survey.ContinueSurvey">
    <broadcasts>
        <message name="checkLogin">
            <argument name="role" value="suadmin,manager" />
        </message>
        <message name="getPrograms" />
    </broadcasts> 
    <results>
        <result name="NotLoggedIn" do="user.login" redirect="true" />
        <result name="NotAuthorized" do="user.notauthorized" redirect="true" />
        <result do="view.template" />
    </results>
    <views>
        <include name="body" template="survey/continueSurvey.cfm" />
    </views>
</event-handler>