0

以下是在 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>

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

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

4

1 回答 1

1

您可以为您需要的每个包含创建一个新结果(基于结果值或属性)。如果您设置 redirect="false" 那么它将保留在您的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>
于 2014-07-18T15:17:55.933 回答