我想要使用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頁。
但是,如果我刪除字段名稱中的下劃線 - 一切正常,但我需要下劃線 - 受保護屬性的公司格式。 – MingalevME