Я пытаюсь сохранить новые данные (когда я изменяю, работает нормально) в форме встраивания, но allow_add не работает.
Когда я отправляю данные прототипа ввода данных, запрос-запрос:
ads[adsCapPublisher][new_created_0][publisher]:2302 ads[adsCapPublisher][new_created_0][dailyLimit]:2 ads[adsCapPublisher][edit_0][publisher]: 5201 ads[adsCapPublisher][edit_0][dailyLimit]: 5
Редактировать_0 было хорошо обработано и создает AdsType с AdsCapPublisherType, но когда я добавил новые входы, бросает javascript, при обработке данных происходит сбой в $ request-> handleRequest ():
Catchable fatal error: Argument 1 passed to addAdsCapPublisher() must be an instance of AdsCapPublisher, null given in Ads.php on line 721
Данные равны нулю. И когда, если я установил allow_add в значение false, объекты редактирования обрабатываются хорошо, но новость возвращает ошибку формы:
this form should not contain extra fields
Здесь мои статьи:
Ads.php
class Ads{ /** * @ORM\OneToMany(targetEntity="AdsCapPublisher", mappedBy="ad", cascade={"persist", "remove"}) **/ protected $adsCapPublisher; public function addAdsCapPublisher(AdsCapPublisher $adCapPublisher) { $this->adsCapPublisher[] = $adCapPublisher; return $this; } public function removeAdsCapPublisher(AdsCapPublisher $adCapPublisher) { $this->adsCapPublisher->removeElement($adCapPublisher); } public function getAdsCapPublisher() { return $this->adsCapPublisher; } public function setAdsCapPublisher($adsCapPublisher) { $this->adsCapPublisher = $adsCapPublisher; return $this; } [...] }
AdsCapPublisher.php
class AdsCapPublisher{ /** * @var Users * * @ORM\ManyToOne(targetEntity="Users", fetch="LAZY") * @ORM\JoinColumn(name="id_publisher", referencedColumnName="id_user") */ protected $publisher; /** * @var decimal $dailyLimit * * @ORM\Column(name="daily_limit", type="decimal", nullable=false) */ protected $dailyLimit; [...] }
AdsType.php
public function buildForm(FormBuilderInterface $builder, array $options) { $entityId= $builder->getData(); $builder->add('adsCapPublisher', 'collection', array( 'type' => new AdsCapPublisherType(), 'required' => false, 'allow_add' => true, 'allow_delete' => true, 'by_reference' => false ))
AdsCapPublisherType.php
class AdsCapPublisherType extends AbstractType{ public function buildForm(FormBuilderInterface $builder, array $options) { // -- SECTION: General $builder ->add('publisher', 'hidden', array( 'attr' => array( 'class' => 'js-field-popup-publisher-added' ))) ->add('dailyLimit', 'text', array( 'required' => false, 'attr' => array( 'class' => 'js-field-popup-budget-added form-control k-input-field k-is-input-text k-ellipsis k-has-currency-inside-input', 'min' => 0, ) )); } public function getName() { return 'adsCapPublisher'; } public function setDefaultOptions(OptionsResolverInterface $resolver) { $resolver->setDefaults(array( 'csrf_protection' => false, 'data_class' => 'Entity\AdsCapPublisher', 'csrf_field_name' => '_token', 'intention' => 'ads', 'translation_domain' => 'ads', 'empty_data' => null )); } }
Любая помощь? : S