2016-07-18 14 views
0

Я пытаюсь создать и сделать свой первый частичный. Сначала я создал файл «TableRow.html».Частично не отображается

TableRow.html

Затем я создал карту псевдонима для целей тестирования. Весь код:

<f:layout name="Default" /> 

This Template is responsible for creating a table of domain objects. 

If you modify this template, do not forget to change the overwrite settings 
in /Configuration/ExtensionBuilder/settings.yaml: 
    Resources: 
    Private: 
     Templates: 
     List.html: keep 

Otherwise your changes will be overwritten the next time you save the extension in the extension builder 

<f:section name="main"> 


    <table class="tx_troubleshooterv3" > 
     <tr><td>Test</td></tr> 
     <f:alias 
      map="{ 
       masterpagez: 
       { 
        0: { 
         infotext: 'This is the main page.', 
         questions: 
         { 
          0: { 
           question: 'Main Question A1', 
           pages: 
           { 
            infotext: 'Answer A1', 
            questions: 
            { 
             0: { 
              question: 'Question B1' 
              pages: { 
               infotext: 'Answer B1', 
               questions: 
               { 
                0: { 
                 question: 'Question C1', 
                 pages: { 
                  infotext: 'Answer C1', 
                  questions: NULL 
                 } 
                } 
               } 
              } 
             } 
             1: { 
              question: 'Question B2' 
              pages: { 
               infotext: 'Answer B2', 
               questions: NULL 
              } 
             } 
            } 
           } 
          }, 
          1: { 
           question: 'Main Question A2', 
           pages: 
           { 
            infotext: 'Answer A2', 
            questions: 
            { 
             0: { 
              question: 'Question B2', 
              pages: { 
               infotext: 'Answer B2', 
               questions: NULL 
              } 
             } 
            } 
           } 
          } 
         } 
        } 
       } 
      }" 
     > 


      <f:for each="{masterpagez}" as="masterpage"> 
       <f:for each='{masterpage.questions}' as="qquestion"> 
        <f:for each='{qquestion.pages}' as='page'> 

         <f:render partial="TableRow" arguments="{page: page}"/> 
        </f:for> 
       </f:for> 
      </f:for> 
     </f:alias> 

Как вы можете видеть, я просто пытаюсь передать страницу из первых двух вопросов в мой неполный файл. Тогда я просто пытаюсь сделать текст подсказки этих страниц в моем частичное:

TableRow.html

<tr><td><strong>{page.infotext}</strong></td></tr> 

Но я только получить на выход «тест», и больше ничего. Почему мой частичный не отображается?

Ожидаемые результаты:

ответа A1

ответа В2

Выход (как HTML):

Result


Обновление:

Я только что отладил переменную «страница», но есть 4 отладочных прямоугольника, вместо 2, как я ожидал ?! Может кто-нибудь объяснить это?

Debug

ответ

1

Все работает, как ожидалось. Ваша частичная визуализация. Но вы создаете довольно сложный массив, который не подходит для ваших итерационных подходов. Ваш последний цикл

<f:for each='{qquestion.pages}' as='page'> 

будет, например, итерацию по этому массиву

pages: { 
    infotext: 'Answer B1', 
    questions: 
    { 
     0: { 
      question: 'Question C1', 
      pages: { 
       infotext: 'Answer C1', 
       questions: NULL 
      } 
     } 
    } 
} 

Так первый {page} будет Answer B1 и второй будет массив вопросов. Это точно результат отладки, который вы получили. Но ни у кого нет свойства infotext, поэтому {page.infotext} ничего не выводит. Попробуйте этот блок для итерации вместо этого и увидеть результат:

<f:for each="{masterpagez}" as="masterpage"> 
    <f:for each="{masterpage.questions}" as="qquestion"> 
     <f:render partial="TableRow" arguments="{infotext: qquestion.pages.infotext}" /> 
    </f:for> 
</f:for> 

И в вашем парциальное:

<tr><td><strong>{infotext}</strong></td></tr>