$em = $this->modelManager->getEntityManager('Stnu\EduBundle\Entity\DealItem');
$query = $em->createQueryBuilder('d')
->select('d')
->from('StnuEduBundle:DealItem', 'd')
->innerJoin('d.deal', 'de')
->where('d.course = :course')
->andWhere('de.status = :status')
->setParameter('course',$course)
->setParameter('status','order');
$defaults = $query->getQuery()->getResult();
$formMapper
->with('Certificaten verzenden cursus \''. $title .'\'', array('description' => 'Begeleidende tekst e-mail'))
->add('dealItems', 'sonata_type_model', array(
'required' => true,
'expanded' => false,
'btn_add' => false,
'multiple' => true,
'label' => 'Verzenden aan',
'query' => $query,
'property' => 'deal.user',
'data' => $defaults,
'validation_groups' => false
))
->add('subject', 'text', array('required' => true, 'label' => 'Onderwerp', 'data' => $subject))
->add('body', 'textarea', array('label' => 'Bericht', 'required' => false, 'data' => $body, 'attr' => array('class' => 'tinymce', 'data-theme' => 'fullpage', 'style' => 'height: 350px')));
控制器:
/**
* Create action
*
* @return Response
*
* @throws AccessDeniedException If access is not granted
*/
public function createAction()
{
// the key used to lookup the template
$templateKey = 'edit';
if (false === $this->admin->isGranted('CREATE')) {
throw new AccessDeniedException();
}
$object = $this->admin->getNewInstance();
$this->admin->setSubject($object);
/** @var $form \Symfony\Component\Form\Form */
$form = $this->admin->getForm();
$form->setData($object);
if ($this->getRestMethod()== 'POST') {
$object->setDealItems($object->getDealItems());
$form->submit($this->get('request'));
这个错误出现在此点之后。
实体:
<?php
namespace Stnu\EduBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
use Doctrine\Common\Collections\ArrayCollection;
/**
* DocsEmail
*
* @ORM\Entity
*/
class CertificateEmail {
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @ORM\ManyToMany(targetEntity="DealItem")
* @ORM\JoinTable(name="certificateemails_dealitems",
* joinColumns={@ORM\JoinColumn(name="certificateEmail_id", referencedColumnName="id")},
* inverseJoinColumns={@ORM\JoinColumn(name="dealItem_id", referencedColumnName="id")}
* )
*/
private $dealItems;
private $subject;
private $body;
private $extraEmailTo;
public function __construct() {
$this->dealItems = new ArrayCollection();
}
/**
* Add dealItem
*
*/
public function addDealItem(\Stnu\EduBundle\Entity\DealItem $dealItem) {
$this->dealItems->add($dealItem);
//$this->dealItems[] = $dealItem;
return $this;
}
/**
* Remove dealItem
*/
public function removeDealItem(\Stnu\EduBundle\Entity\DealItem $dealItem) {
foreach ($this->dealItems as $item) {
if ($dealItem === $item) {
// manager of Stnu\EduBundle\Entity\DealItem
$entityManager->remove($dealItem);
}
}
}
/**
* Get dealItems
*
* @return \Doctrine\Common\Collections\Collection
*/
public function getDealItems() {
return $this->dealItems;
}
public function setDealItems($dealItems) {
$this->dealItems = new ArrayCollection();
if (count($dealItems) > 0) {
foreach ($dealItems as $dealItem) {
$this->addDealItem($dealItem);
}
}
return $this;
}
/**
* Set subject
*
* @param string $subject
*/
public function setSubject($subject) {
$this->subject = $subject;
return $this;
}
/**
* Get subject
*
* @return string
*/
public function getSubject() {
return $this->subject;
}
/**
* Set body
*
* @param string $body
*/
public function setBody($body) {
$this->body = $body;
return $this;
}
/**
* Get body
*
* @return string
*/
public function getBody() {
return $this->body;
}
/**
* Set extraEmailTo
*
* @param string $extraEmailTo
*/
public function setExtraEmailTo($extraEmailTo) {
$this->extraEmailTo = $extraEmailTo;
return $this;
}
/**
* Get extraEmailTo
*
* @return string
*/
public function getExtraEmailTo() {
return $this->extraEmailTo;
}
}
希望有人能帮助我!
$object->setDealItems($object->getDealItems());
? - Ragdata$form->submit($this->get('request'));
你在上面的评论中提到的Form类没有_submit_方法...你扩展了它吗? - Ragdata