sonataadmin sonata_type_model_autocomplete

12 views
Skip to first unread message

Jose Garza

unread,
Mar 3, 2016, 11:52:51 AM3/3/16
to Symfony Barcelona
Buenos días

Estoy intentando implementar un campo autoplente ManyToMany con el bundle sonataadmin. 

entidad students

    /**
     * @ORM\ManyToMany(targetEntity="AppBundle\Entity\AccountsHeader", mappedBy="student", cascade={"persist", "remove"}, orphanRemoval=true)
     */

   
private $accounts;


   
public function __construct()
   
{
        $this
->accounts = new ArrayCollection();
   
}
   
   
/**
     * Get
accounts
     *
     * @param \Doctrine\Common\Collections\ArrayCollection
     */

   
public function getAccounts()
   
{
       
return $this->accounts;
   
}
   
   
/**
     * Add
accounts
     *
     * @param AppBundle\Entity\
AccountsHeader $addAccounts
     */

   
public function addAccounts(AccountsHeader $addAccounts)
   
{
        $addAccounts
->addUser($this);
        $this
->accounts->add($addAccounts);
   
}
   
   
/**
    * Remove
accounts
    *
    * @param AppBundle\Entity\
AccountsHeader $accounts
    */

   
public function removeAccounts(AccountsHeader $accounts)
   
{
        $accounts
->removeStudent($this);
   
}


Entidad AccountsHeader


   
/**
     * @ORM\ManyToMany(targetEntity="AppBundle\Entity\Students", inversedBy="accounts")
     * @ORM\JoinTable(name="AccountsDetails",
     *      joinColumns={@ORM\JoinColumn(name="accId", referencedColumnName="id")},
     *      inverseJoinColumns={@ORM\JoinColumn(name="studentId", referencedColumnName="id")}
     *      )
     */

   
private $student;


   
public function __construct() {
        $this
->student = new ArrayCollection();
   
}

    /**
     * Get student
     *
     * @param \Doctrine\Common\Collections\ArrayCollection
     */
    public function getStudent()
    {
        return $this->student;
    }
   
   
/**
     *
addStudent
     *
     * @param AppBundle\Entity\Students $addStudents
     */

   
public function addStudent(Students $addStudents)
   
{
        $this
->student->add($addStudents);
   
}
   
   
/**
    * Remove s
tudent
    *
    * @param AppBundle\Entity\Students $students
    */

   
public function removeStudent(Students $students)
   
{
        $this
->student->removeElement($students);
   
}


Clase AccountHeaderAdmin 

    protected function configureFormFields(FormMapper $mapper)
   
{
        $mapper
               
->add('student', 'sonata_type_model_autocomplete', array(
                           
'property' => 'firstName',
                           
'multiple' => true,
                           
'required' => false,
                           
'label'    => 'lalala'
                           
), array(
                           
'property' => 'firstName'
                           
))
           
;
   
}


Clase StudentsAdmin

    protected function configureDatagridFilters(DatagridMapper $mapper)
   
{        
       
//$this->setTranslationDomain('adminStudents');
       
        $mapper
           
->add('firstName', null, array('label' => 'students.entity.firstName'))
           
->add('surname', null, array('label' => 'students.entity.surname'))
       
;
   
}


Al realizar una búsqueda de un estudiante se ejecuta la llamada Ajax pero me devuelve el error "The field "student" does not exist."             

Le he dado muchas vueltas pero no consigo ver que puedo haber hecho mal.

Agradecería una ayuda

Reply all
Reply to author
Forward
0 new messages