Как написать чистый код с шаблоном свободного маркера в нескольких блоках if и else? - PullRequest
0 голосов
/ 10 июня 2019

Я новичок в шаблоне свободных маркеров, и в моем шаблоне кажется, что мне, возможно, придется повторить много блоков if и else с повторением того же условия if. Есть ли более удобный или более чистый способ написать это, если заблокировать или вместо того, чтобы повторять их.

               <span > </span>
         <#elseif section.role?has_content && section.person?has_content && section.organisation??>
           <span > </span>
         <#elseif section.role?has_content && section.organisation?has_content && section.person??>
           <span > </span>
         <#elseif section.person?has_content && section.organisation?has_content && section.role??>
               <span > </span>
         <#elseif section.person?has_content && section.role?? && section.organisation??>
               <span > </span>
         <#elseif section.organisation?has_content && section.role?? && section.person??>
               <span > </span>
         <#elseif section.role?has_content && section.organisation?? && section.person??>
               <span > </span>
         </#if>

Ответы [ 3 ]

1 голос
/ 10 июня 2019
  • Я думаю, что вы можете сделать что-то подобное в freemaker, который намного чище, чем повторяет условия.

  • Вместо того, чтобы повторять это section.role?has_content несколько разможно присвоить это значение условия в переменной и использовать его позже, как это <#assign hasRole = section.role?has_content />

           <#assign hasRole = section.role?has_content />
           <#assign hasOrganisation = section.organisation?has_content />

           <span >
                <#if section.person?has_content><span ></span><#if section.role?has_content><span ></span></#if></#if>
                <#if section.role?has_content><span ></span><#if section.organisation?has_content><span ></span></#if></#if>
                <#if section.organisation?has_content>
                    <span ></span>

                </#if>
           </span>```

0 голосов
/ 27 июня 2019

На самом деле, вы можете использовать тег <#switch> для обработки нескольких случаев, как в классических языках программирования.Вот пример из freemarker.apache.org:

<#switch animal.size>
<#case "small">
    This will be processed if it is small
<#break>
<#case "medium">
    This will be processed if it is medium
<#break>
<#case "large">
    This will be processed if it is large
<#break>
<#default>
    This will be processed if it is neither
</#switch>

В вашем примере, как я вижу, вы можете точно обернуть свои утверждения в несколько вариантов переключения и использовать переменные, которые Адам предлагает вам

0 голосов
/ 10 июня 2019

Вы можете проверить все в одном операторе if:

<#if section.person?? && section.role?? && section.organisation?? &&
(section.person?has_content || section.organisation?has_content || section.role?has_content)>
 <span ></span>
</#if>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...