Endlich habe ich diese im Konstruktor des Formulars Klasse Eltern getan (in der Einheit):
$this->envios = new \Doctrine\Common\Collections\ArrayCollection();
for ($i = 0; $i < count(self::$KILOS); $i++) {
$peso = new TarifaPeso();
$peso->setKilosMaxlim(self::$KILOS[$i]);
$this->addPeso($peso);
}
mit $ KILOS:
private static $KILOS = array(1,2,3,5,10,15,20,25,30,35,40,45,50,55,60,65,70,75,80,85,90,95,100,300,500,1000,1001);
Auf diese Weise ich die Form ändern mit ein eventListener auf diese Weise:
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('precio', null, array(
'attr' => array('autofocus' => true),
'label' => 'label.precio ' ,
));
;
$builder->addEventListener(FormEvents::POST_SET_DATA, function (FormEvent $event)
{
$form = $event->getForm();
$data = $event->getData();
if ($data) {
$valor = $data->getKilosMaxlim();
$field = $form->get('precio');
$config = $field->getConfig();
$options = $config->getOptions();
$options['label'] = 'Valor para '.$valor; // change the label
$form->add($field->getName(), $config->getType()->getName(), $options);
}
});
}
Anstatt Entity-Klasse "Tarifa" als zugrunde liegende Datenklasse für das Formular zu verwenden, machen Sie ano Dazu zwei Klassen, sagen "[Ihr Bündel]/Form/Model/Tarifa" und "[Ihr Bündel]/Form/Model/TarifaPeso". Dann fügen Sie TarifaPeso 20 Fälle zu Tarifa hinzu und zeigen das Formular an. Wenn das Formular abgeschickt wird, wählen Sie alle Daten aus Tarifa, instanziieren und speichern Sie Ihre Entitäten. Machen Sie einen Service dafür, tun Sie es nicht im Controller. –