Question

i use sonata admin and i have a 'Fonctionnare' entity. i changed the 'codeFonctionnaire' type of this entity to string but when i create the Fonctionnaire admin class and try to add new fonctionaire i got this error message: Neither the property "codeFonctionnaire" nor one of the methods "setCodeFonctionnaire()", "_set()" or "_call()" exist and have public access in class "Examens\ExamensBundle\Entity\Fonctionnaire". Fonctionnaire.php:

    <?php

    namespace Examens\ExamensBundle\Entity;

    use Doctrine\ORM\Mapping as ORM;

    /**
    * Fonctionnaire
    */
   class Fonctionnaire
   {
    /**
     * @var string
     */
    private $codeFonctionnaire;

    //////

     /**
     * Get codeFonctionnaire
     *
     * @return string 
     */

    public function getCodeFonctionnaire()
    {
        return $this->codeFonctionnaire;
    }
    ////////

FonctionnaireAdmin.php:

    <?php

    namespace Examens\ExamensBundle\Admin;

    use Sonata\AdminBundle\Admin\Admin;
    use Sonata\AdminBundle\Datagrid\ListMapper;
    use Sonata\AdminBundle\Datagrid\DatagridMapper;
    use Sonata\AdminBundle\Validator\ErrorElement;
    use Sonata\AdminBundle\Form\FormMapper;
    use Sonata\AdminBundle\Show\ShowMapper;
    use Examens\ExamensBundle\Entity\Fonctionnaire;


class FonctionnaireAdmin extends Admin
{
     protected $datagridValues = array(
        '_sort_order' => 'ASC',
        '_sort_by' => 'codeFonctionnaire'
     );


     protected function configureFormFields(FormMapper $formMapper)
     {
        $formMapper
        ->add('codeFonctionnaire','text',array('label'=>'Code fonctionnaire'))       
        //////
     }

what's wrong with the entity?

Was it helpful?

Solution 2

i deleted this code from fonctionnaire.orm.yml:

generator:
            strategy: IDENTITY

and it works.

OTHER TIPS

You need to regenerate the getters and setters of your Fonctionnaire class. Your IDE can do it for you. Or at least, just add a

public function setCodeFonctionnaire($codeFonctionnaire) {
    $this->codeFonctionnaire = $codeFonctionnaire;
}

EDIT

Here is what might be your complete Fonctionnaire class :

namespace TechVehi\BlogBundle\Entity;

use Doctrine\ORM\Mapping as ORM;

class Fonctionnaire {

    /**
     * @var string
     *
     * @ORM\Column(name="codeFonctionnaire", type="string", length=255, nullable=true)
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="IDENTITY")
     */
    private $codeFonctionnaire;

    /**
     * @param string $codeFonctionnaire
     */
    public function setCodeFonctionnaire($codeFonctionnaire) {
        $this->codeFonctionnaire = $codeFonctionnaire;
    }

    /**
     * @return string
     */
    public function getCodeFonctionnaire() {
        return $this->codeFonctionnaire;
    }
}

You might have forgotten other informations, like the ORM annotation to link your object to your database.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top