Ich habe Formular mit Feldtyp entity
auf diesem Feld habe ich query_builder
, die Abfrage zurückgeben und 'property' => 'name',
. Und meine Frage, was in Datentransformator für Änderung tun muss, wählen Sie Namen, müssen kompliziert mit mehreren abgelegt, Beispiel - name_address_office. Mit 2,8 Symfony muss ich dataTransformer AnsatzSymfony Form Typ Einheit Daten Transformator
meine Form
class OutBoundInvoiceRowType extends AbstractType
{
/**
* @var array
*/
private $vatClasses;
/**
* @var Container
*/
private $container;
/**
* @var EntityManager
*/
private $em;
/**
* OutBoundInvoiceRowType constructor.
* @param Container $container
* @param $vatClasses
*/
public function __construct(
Container $container,
$vatClasses
) {
$this->container = $container;
$this->vatClasses = $vatClasses;
$this->em = $this->container->get('doctrine.orm.entity_manager');
}
/**
* @param FormBuilderInterface $builder
* @param array $options
*/
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('location', 'entity', array(
'class' => Location::class,
'property' => 'name',
'empty_value' => 'Choice Location',
'query_builder' => self::getLocations(),
'required' => false
))
->add('vat', ChoiceType::class, [
'choices' => ?,
'required' => true,
])
$builder->get('vat')
->addModelTransformer(new VatTransformer($this->container));
}
und meine VatTransformer:
class VatTransformer implements DataTransformerInterface
{
/**
* @var Container
*/
private $container;
/**
* @var EntityManager
*/
private $em;
/**
* LocationTransformer constructor.
* @param Container $container
*/
public function __construct(Container $container)
{
$this->container = $container;
$this->em = $this->container->get('doctrine.orm.entity_manager');
}
/**
*
* @param Location|null $issue
* @return string
*/
public function transform($issue)
{
if (null === $issue) {
return '';
}
}
}
in Transformationsfunktion $issue
haben null
und wenn Rückkehr ''
nichts ändern in Form, haben noch 'property' => 'name',
auf Wahl, was im Datenumwandlungsnamen tun muss?
dies jetzt habe ich
und das, was ich brauche
müssen Name mehrerer Teile
UPDATE
Ok. Ich habe Auswahlfeld vat
und ich brauche Daten in der Wahl für MwSt-Feld wie - aus einigen Entity-Feld, Beispiel-Entity Location (ID, Name)
Wie dies mit DataTransformer realisiert?
Ein Datentransformator ist hier wahrscheinlich nicht die richtige Lösung. Was willst du eigentlich erreichen? Und welche Symfony-Version verwendest du? Überprüfen Sie auch die ['Choice_label'] (https://symfony.com/doc/current/reference/forms/types/choice.html#choice-label) und [' choice_value'] (https://symfony.com/ doc/current/Referenz/Formulare/types/choice.html # Auswahl-Wert) Optionen. – Yoshi
Symfony 2.8 Ich brauche den DataTransformer-Ansatz –
Momentan gibt es nichts in Ihrer Frage, was darauf schließen lässt, dass Sie * einen Datentransformator * brauchen * müssen. Wenn Sie einfach 'choice_label' mit einem Callback verwenden, wird das gleiche Ergebnis erzielt. Also füge bitte hinzu, warum du denkst, dass du einen Datentransformator brauchst. Für den Moment sieht das so aus, als ob Sie es einfach benutzen wollen, weil Sie nicht wissen, wie Sie Ihr tatsächliches Problem lösen können. – Yoshi