вставлять из Symfony 2.3.8 — Null, когда allow_add имеет значение true

Я пытаюсь сохранить новые данные (когда я изменяю, все работает нормально) в виде встраивания, но 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

Правильно обработанный edit_0 создает AdType с 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

2

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]