2012-09-14 22 views
0

我想要使用DataGrid的過濾器與我的簡單的實體:未定義指數索納塔/ DoctrineORMAdminBundle /猜測器/ FilterTypeGuesser.php在配置Datagrid的過濾器wihin SonataAdminBundle

// MyBundle /實體/ Application.php

/** 
* 
* @ORM\Entity 
* @ORM\Table(name="application") 
*/ 
class Application extends BaseEntity 
{ 
    /** 
    * @var integer $_id 
    * 
    * @ORM\Id 
    * @ORM\Column(name="id", type="integer") 
    */ 
    protected $_id; 

    /** 
    * @var string $_name 
    * 
    * @ORM\Column(name="name", type="string", length=1000) 
    */ 
    protected $_name; 

    public function __toString() 
    { 
     if ((string) $this->_id === '') { 
      return "N/A"; 
     } 
     return $this->_name; 
    } 

    /** 
    * Set _id 
    * 
    * @param integer $id 
    */ 
    public function setId($id) 
    { 
     $this->_id = $id; 
    } 

    /** 
    * Get _id 
    * 
    * @return integer 
    */ 
    public function getId() 
    { 
     return $this->_id; 
    } 

    /** 
    * Set _name 
    * 
    * @param string $name 
    */ 
    public function setName($name) 
    { 
     $this->_name = $name; 
    } 

    /** 
    * Get _name 
    * 
    * @return string 
    */ 
    public function getName() 
    { 
     return $this->_name; 
    } 
} 

// MyBundle /管理/ ApplicationAdmin.php

class ApplicationAdmin extends Admin 
{ 
    /** 
    * @param string $code 
    * @param string $class 
    * @param string $baseControllerName 
    */ 
    public function __construct($code, $class, $baseControllerName) 
    { 
     parent::__construct($code, $class, $baseControllerName); 
     $this->setMaxPerPage(25); 
    } 

    protected function configureFormFields(FormMapper $formMapper) 
    { 
     $formMapper 
      ->add('id', 'integer') 
      ->add('name', 'text') 
     ; 
    } 

    /** 
    * {@inheritdoc} 
    */ 
    protected function configureDatagridFilters(DatagridMapper $datagridMapper) 
    { 
     $datagridMapper 
      ->add('name'); 
     ; 
    } 

    protected function configureListFields(ListMapper $listMapper) 
    { 
     $listMapper 
      ->addIdentifier('id', null, array('label' => 'ID')) 
      ->addIdentifier('name', null, array('label' => 'Name')) 
     ; 
    } 
} 

但是,當我試圖獲得的應用程序列表中,我得到:

Notice: Undefined index: name in /path-to-symfony-project/vendor/bundles/Sonata/DoctrineORMAdminBundle/Guesser/FilterTypeGuesser.php line 65 

如果改變configureDatagridFilters功能代碼:

protected function configureDatagridFilters(DatagridMapper $datagridMapper) 
{ 
    $datagridMapper 
     ->add('name', 'doctrine_orm_string'); 
    ; 
} 

我得到要求的過濾器的應用程序列表成功,但是當我嘗試提交過濾了一些數據格式(例如,名稱中包含AAA)我得到另一個錯誤:

[Semantical Error] line 0, col 87 near 'name LIKE :n': Error: Class MyBundle\Entity\Application has no field or association named name 

如果改變configureDatagridFilters功能代碼:

protected function configureDatagridFilters(DatagridMapper $datagridMapper) 
{ 
    $datagridMapper 
     ->add('_name'); 
     //or 
     //->add('_name', 'doctrine_orm_string'); 
    ; 
} 

我得到要求的過濾器的應用程序列表也順利,但是當我試圖提交過濾器的一些數據形式(即名稱中包含AAA)我得到的第三個錯誤:

Invalid parameter format, : given, but :<name> or ?<num> expected. 
500 Internal Server Error - QueryException 

我沒有任何想法,請,HEL頁。

+0

但是,如果我刪除字段名稱中的下劃線 - 一切正常,但我需要下劃線 - 受保護屬性的公司格式。 – MingalevME

回答

-3

也許是時候將所有Symfony2應用程序的舊公司編碼風格改爲PSR-1 Basic Coding StandardPSR-2-coding-style-guide

對私有/受保護屬性使用非預期內容已被棄用,並且僅適用於不存在私有和受保護方法的舊PHP4項目。 在一個應用程序中混合不同的編碼風格效果不佳。所有Symfony捆綁包都使用PSR標準和Symfony standards

相關問題