В событии modelglue используйте различные файлы представлений в зависимости от условий / результатов.

Ниже приведен обработчик событий, используемый в 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 ответ

Решение

Вы можете создать новый результат для каждого включения, которое вам нужно (на основе значения результата или атрибута). Если вы установите 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>
Другие вопросы по тегам