我正在尝试将数据网格过滤器与我的简单实体一起使用:
// MyBundle/Entity/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/Admin/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
我没有想法,请帮忙。