Sonata admin configureFormFields

时间:2014-02-19 09:38:25

标签: doctrine sonata-admin

我使用sonata admin,我有一个'Fonctionnare'实体。我将此实体的'codeFonctionnaire'类型更改为字符串,但是当我创建Fonctionnaire管理类并尝试添加新的fonctionaire时,我收到此错误消息: 属性“codeFonctionnaire”和方法“setCodeFonctionnaire()”,“_ set()”或“ _call()”之一都不存在,并且在“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'))       
        //////
     }

该实体出了什么问题?

2 个答案:

答案 0 :(得分:0)

您需要重新生成Fonctionnaire类的getter和setter。您的IDE可以为您完成。 或者至少,只需添加一个

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

修改

以下是您完整的Fonctionnaire课程:

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;
    }
}

您可能忘记了其他信息,例如将链接对象的ORM注释添加到数据库中。

答案 1 :(得分:0)

我从fonctionnaire.orm.yml删除了这段代码:

generator:
            strategy: IDENTITY

它有效。