私はSymfony2を使って "複雑なフォーム"を作成しようとしています。このフォームの1つのフィールドは別の「シンプルフォーム」から作成され、フォームの6つのフィールドは別の「シンプルフォーム」から作成されます(繰り返しフィールド、はい)。それは "フォームのフォーム"や埋め込みフォームのようなものです。Symfony2フォームのCollectionTypeに行を追加する方法は?
<?php
namespace SisEvo\ConfiguracionBundle\Form;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
class VariableReguladaElectricoValoresDatosType extends AbstractType{
/**
* @param FormBuilderInterface $builder
* @param array $options
*/
public function buildForm(FormBuilderInterface $builder, array $options) {
$builder
->add('valor');
}
/**
* @param OptionsResolver $resolver
*/
public function configureOptions(OptionsResolver $resolver) {
$resolver->setDefaults(array(
'data_class' => 'SisEvo\ConfiguracionBundle\Entity\VariableReguladaElectricoValoresDatos'
));
}
}
「複雑で6回繰り返される他の「簡単なフォームを」:
次のコードは、「複合型」の唯一のフィールドである第一の「単純な形式」に対応しますフォーム ":
<?php
namespace SisEvo\MaestroBundle\Form;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
class VariablesMedidaType extends AbstractType{
/**
* @param FormBuilderInterface $builder
* @param array $options
*/
public function buildForm(FormBuilderInterface $builder, array $options) {
$builder->add("medida", EntityType::class, array(
'required' => true,
'class' => 'MaestroBundle:VariablesMedida',
'choice_label' => 'medida',
));
}
/**
* @param OptionsResolver $resolver
*/
public function configureOptions(OptionsResolver $resolver) {
$resolver->setDefaults(array(
'data_class' => 'SisEvo\MaestroBundle\Entity\VariablesMedida'
));
}
}
そして最後に、 "複雑な形":
<?php
namespace SisEvo\ConfiguracionBundle\Form;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
use Symfony\Component\Form\Extension\Core\Type\CollectionType;
use SisEvo\MaestroBundle\Form\VariablesMedidaType;
use SisEvo\ConfiguracionBundle\Form\VariableReguladaElectricoValoresDatosType;
class VariableReguladaElectricoValoresType extends AbstractType {
/**
* @param FormBuilderInterface $builder
* @param array $options
*/
public function buildForm(FormBuilderInterface $builder, array $options) {
$builder
->add('idDatos', CollectionType::class, array(
// each entry in the array will be an "email" field
'entry_type' => VariableReguladaElectricoValoresDatosType::class,
// these options are passed to each "email" type
'entry_options' => array(
'attr' => array(
'rows' => 6
//,'class' => 'VariableReguladaElectricoValoresDatos'
)),
))
//->add('valores', 'collection', array('type' => new VariableReguladaElectricoValoresDatosType()))
->add('idMedida', new VariablesMedidaType());
}
/**
* @param OptionsResolver $resolver
*/
public function configureOptions(OptionsResolver $resolver) {
$resolver->setDefaults(array(
'data_class' => 'SisEvo\ConfiguracionBundle\Entity\VariableReguladaElectricoValores'
, 'cascade_validation' => true
));
}
}
idMedida
フィールドは正常に動作していますが、私はidDatos
フィールドを印刷するためには6回印刷する必要があります。私はあなたがコードで見ることができるようにオプションの行でそれをしようとしましたが、動作していません。私はそれを解決するために{{ form_widget(myComplexForm) }}
任意のアイデアを使用してフォームを印刷しようとしている小枝ファイルで
?