2015-07-09 14 views
1

Я использую формы Symfony и Twig для создания фильтра, но что-то странное происходит, и я не могу понять, почему. У меня есть 4 поля выбора, первые 2 поля выбора возвращают правильные значения, но последние 2 поля выбора возвращают те же значения, что и поле второго выбора.Поле выбора формы Silex

это код для контроллера

// Create Form 
    $filterForm = $app['form.factory']->createNamed('filterForm') 

     // search 
     ->add('title', 'text') 

     // date 
     ->add('dates', 'choice', array(
      'choices' => $DatesForCombo, 
      'placeholder' => 'Kies...', 
      'required' => false)) 

     // category 
     ->add('categories', 'choice', array(
      'choices' => $CategoriesForCombo, 
      'placeholder' => 'Kies...', 
      'required' => false)) 

     // location 
     ->add('locations', 'choice', array(
      'choices' => $LocationsForCombo, 
      'placeholder' => 'Kies...', 
      'required' => false)) 

     // organiser 
     ->add('organisers', 'choice', array(
      'choices' => $OrganisersForCombo, 
      'placeholder' => 'Kies...', 
      'required' => false)) 

     // is_gentian 
     ->add('gents',null,array(
      'label' => 'Enkel Gents gesproken', 
      'required' => false)) 

     ->add('gentsGesproken', 'checkbox', array(
      'value' => 'Y', 
      'required' => false)) 

     // is_free 
     ->add('gratis',null,array(
      'label' => 'Enkel gratis events', 
      'required' => false)) 

     ->add('gratisEvents', 'checkbox', array(
      'value' => 'Y', 
      'required' => false)); 

Это код Twig шаблона

<form action="{{ path('events.index') }}" method="post" {{ form_enctype(filterForm) }} novalidate="novalidate" role="form"> 
      <fieldset> 
       <legend>Filter Events</legend> 
       <div class="form-group"> 
        {{ form_widget(filterForm.title, { 'attr' : { 'class': 'form-control', 'name' : 'filterform[title]', 'id':'filterform_title' }}) }} 
       </div> 

       <!-- filter dates --> 
       <div class="form-group"> 
        {{ form_widget(filterForm.dates, { 'attr' : { 'class': 'form-control', 'name' : 'filterform[day]', 'id':'filterform_title' }}) }} 
       </div> 

       <!-- filter categories --> 
       <div class="form-group"> 
        {{ form_widget(filterForm.categories, { 'attr' : { 'class': 'form-control', 'name' : 'filterform[category]', 'id':'filterform_categories' }}) }} 
       </div> 

       <!-- filter location --> 
       <div class="form-group"> 
        {{ form_widget(filterForm.locations, { 'attr' : { 'class': 'form-control', 'name' : 'filterform[location]', 'id':'locations' }}) }} 
       </div> 

       <!-- filter organisers --> 
       <div class="form-group"> 
        {{ form_widget(filterForm.organisers, { 'attr' : { 'class': 'form-control', 'name' : 'filterform[organiser]', 'id':'organisers' }}) }} 
       </div> 

       <div class="form-group"> 
        <!-- filter chckbx Gents gesproken --> 
        <label> 
         {{ form_widget(filterForm.gentsGesproken) }}     
         {{ form_label(filterForm.gents) }} 
        </label> 
        <!-- filter chckbx Gratis events --> 
        <label> 
         {{ form_widget(filterForm.gratisEvents) }}     
         {{ form_label(filterForm.gratis) }} 
        </label> 
       </div> 

       <input type="hidden" id="filterform__token" name="filterform[_token]" value="lJ3pQTYX8yEbYpDhmHH6V_ktwtbz_5BdWP0Fss6Z7s0" /> 
       <button type="submit" id="filterform_filter" name="filterform[filter]" class="btn btn-primary pull-right">Filter</button> 
      </fieldset> 
     </form> 

В 4 массивы используются, конечно, разные, кто-то может помочь мне?

+0

вы можете добавить сгенерированный HTML? – mTorres

+0

вот код html: https://www.dropbox.com/s/qjghqhpkxfz6yhf/form.html?dl=0 –

ответ

0

Я нашел решение, некоторые из символов html, которые не были закодированы правильно, хотя моя база данных была в utf8mb5_general_ci, и я использую UTF-8 в своих шаблонах, символы, которые показаны как . Похоже, что Silex Forms не может обрабатывать поле выбора с символом, который не закодирован. Никогда не думал, что эти 2 проблемы связаны, но это просто вопрос использования метода utf8_encode() для заполнения массивов, используемых в полях выбора. В моих шаблонах прута я использовал

// create an array for the organiser combobox... 
$OrganisersForCombo = array(); 
$numberOfOrganisers = count($AllOrganisers); 
for($i = 0 ; $i <= $numberOfOrganisers-1 ; $i++){ 
    $title = $AllOrganisers[$i]['title']; 
    $OrganisersForCombo[$i+1] = utf8_encode($title); 
} 

В моих шаблонах Twig я использовал

{{ data|convert_encoding('UTF-8', 'ASCII') }} 

так: http://twig.sensiolabs.org/doc/filters/convert_encoding.html

Смежные вопросы