2016-01-11 1 views
0

Это первый раз, когда я использую жидкость.Typo3 Fluid, разделяющий строку на элементы, чтобы иметь возможность сравнивать

Задача: В форме, я пытаюсь отметить эти поля (подсветка или индикатор), которые являются обязательными. Обязательные поля предоставляются в виде строки (в пределах массива {settings.registration.requiredFields})

подход Я думал, что может создать частичный, к которому я прохожу текущий имя_поль и сравнить это имя_поль со списком requiredFields.

Вопрос

1) Я обнаружил, что частичные строки не могут быть сопоставлены.

2) Так я думал, чтобы взорвать строку с v:interator.explode в массив, который, чем можно сравнить с f:for и маркировка делается там, как описано here

Через несколько часов earching в погуглите есть сейчас узнал, что мне нужно добавить расширения vhs и flux. Без успеха.

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

<v:iterator.explode content="Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam" glue=" " as="bar"> 
       <div class="event-registration-value event-title"> 

       </div> 
      </v:iterator.explode> 

из (тест) вход

  <v:iterator.explode content="Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam" glue=" " as="bar"> 
      <div class="event-registration-value event-title"> 
       {bar} 
      </div> 

     </v:iterator.explode> 

Что мне нужно сделать, чтобы получить это работает?

PS: Я использую typo3 7.6.2

ответ

0

Для работы функции v: есть две важные вещи:

  1. Включить расширение Vhs от TER
  2. определить пространство имен

Пространство имен определяется путем добавления

{namespace v=FluidTYPO3\Vhs\ViewHelpers} 

на верхней части файла.

Подсказка:

Если разрывы шаблона после этого того, она не может быть в namespace линии, но вместо того, чтобы опечатка в <v:...> отчетности.

В моем случае это был недостающий конец " и отсутствовал {} вокруг таких же переменных.

Как новичок занял у меня три дня, чтобы решить.

0

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

где-то в вашем TypoScript:

plugin.tx_myext.settings.registration.requiredFields = foo bar baz 

typo3conf/внутр/myext/Классы/ViewHelpers/IsFieldRequiredViewHelper.PHP:

<?php 
namespace Vendor\Myext\ViewHelpers; 

use TYPO3\CMS\Core\Utility\GeneralUtility; 

class IsFieldRequiredViewHelper extends \TYPO3\CMS\Fluid\Core\ViewHelper\AbstractConditionViewHelper { 

    /** 
    * @param string $fieldName Current field name 
    * @param string $requiredFields List of required names separated by spaces 
    * 
    * @return string the rendered string 
    */ 
    public function render($fieldName, $requiredFields) { 
     $requiredArray = GeneralUtility::trimExplode(' ', $requiredFields, true); 

     return (in_array($fieldName, $requiredArray)) 
      ? $this->renderThenChild() 
      : $this->renderElseChild(); 
    } 
} 

Так что в вашем Fluid шаблоне вы можете использовать его несколькими способами, несколько образцов:

{namespace myvhs=Vendor\Myext\ViewHelpers} 


<!-- 1: Use your condition with then/else blocks --> 
<myvhs:isFieldRequired 
     fieldName="foo" 
     requiredFields="{settings.registration.requiredFields}"> 

    <f:then>This field IS required</f:then> 
    <f:else>It's optional...</f:else> 

</myvhs:isFieldRequired> 

<!-- 2: or just with `then` implicit block: --> 
<myvhs:isFieldRequired 
     fieldName="bar" 
     requiredFields="{settings.registration.requiredFields}">Fill the bellow input...</myvhs:isFieldRequired> 

<!-- 3: Add `required-field` class inline --> 
<input type="text" class="{myvhs:isFieldRequired(fieldName: 'baz', requiredFields: settings.registration.requiredFields, then: 'required-field')}"> 

(обратите внимание, что вы, конечно, нужно, чтобы изменить имя поставщика и расширение чтобы соответствовать вашей текущей ситуации)

+0

Извините, я пытаюсь принять [Регистрация событий] (http://typo3.org/extensions/repository/view/sf_event_mgt) Настройки уже есть. –

+0

В таком случае вы можете создать простое расширение точно для своих нужд с помощью Extension Builder: https://typo3.org/extensions/repository/view/extension_builder и добавить указанный выше ViewHelper (обратите внимание: вы можете использовать пользовательские ViewHelpers в шаблонах другие расширения так же, как в собственных exts) – biesior

+0

Кстати, разве поля не должны разделяться запятой в этом ext? (просто снимая, наблюдая его код) – biesior