Несколько поданных за один атрибут - PullRequest
0 голосов
/ 31 марта 2019

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

я пытался добавить ко времени тот же вход в моем конструкторе форм, но он не работает

{{ form_label(form.moisAnne) }}
    <div class="form-group">
        <label class="nom-l-kiity"> mois </label>
        {{ form_widget(form.moisAnne) }}
    </div>
    {{ form_errors(form.moisAnne) }}

    {{ form_label(form.moisAnne) }}
    <div class="form-group">
        <label class="nom-l-kiity"> mois </label>
        {{ form_widget(form.moisAnne) }}
    </div>
    {{ form_errors(form.moisAnne) }}
here mois == month 
and annee == year

1 Ответ

0 голосов
/ 31 марта 2019

Насколько я могу судить, у вас есть несколько вариантов:

использовать преобразователь данных

это, безусловно, чистое решение, и оно должно быть предпочтительнее других.По сути, вы превращаете части данных, которые вы получаете, в массив / объект (moisAnne) и используете его для заполнения нескольких полей.

более длинное и, вероятно, лучшее описание: https://symfony.com/doc/current/form/data_transformers.html (на самом деле это дополнение к следующей инструкции)

  1. Сначала вы создаете новый тип формы MoisAnneTypeс двумя полями, mois и anne.

  2. Затем вы создаете преобразователь данных, который превращает ваш moisAnne в массив ['mois' => $mois, 'anne' => $anne] (и, конечно, также в обратном порядке).

  3. используйте новый тип формы в вашей исходной форме для поля moisAnne

  4. в вашем шаблоне, вам, вероятно, не нужно явно отображать его, но вытакже можно использовать form.moisAnne.mois и form.moisAnne.anne.

развернуть сущность (дешевый преобразователь данных)

добавить геттер и сеттер в AppBundle\Entity\FicheFrais, которые используют массивыдля связи:

public function getExpandedMoisAnne() {
    $mois = /** your code **/
    $anne = /** your code **/
    return ['mois' => $mois, 'anne' => $anne]; 
}
public function setExpandedMoisAnne(array $moisAnne) {
    $this->moisAnne = $moisAnne['mois'].$moisAnne['anne']; // or whatever
}

затем в конструкторе форм вы можете просто использовать

->add('mois', null, [
     'property_path' => 'expandedMoisAnne[mois]'
])
->add('anne', null, [
     'property_path' => 'expandedMoisAnne[anne]'
])

прослушиватели событий

Я считаю, что эта опция довольно грязная, во всяком случае,Я уверен, что можно использовать FormEvent s, чтобы добавить несопоставленные поля, которые не являются частью исходного объектаи выполнять преобразования данных в слушателях / обработчиках событий.Я очень советую против этого.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...