我正在尝试使用奏鸣曲形式添加类别。我的数据库中的表 category 如下所示:
该表包含:
parent_category_id可以为null 。所以我想有一个选择列表,您可以选择父类别。但我对如何创造它有点困惑。我的实体类别如下所示:
<?php
namespace AppBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* Category
*
* @ORM\Table(name="category", indexes={@ORM\Index(name="fk_category_category_idx", columns={"parent_category_id"})})
* @ORM\Entity(repositoryClass="AppBundle\Repository\CategoryRepository")
*/
class Category
{
/**
* @var string
*
* @ORM\Column(name="name", type="string", length=255, nullable=false)
*/
private $name;
/**
* @var boolean
*
* @ORM\Column(name="enabled", type="boolean", nullable=false)
*/
private $enabled = true;
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="IDENTITY")
*/
private $id;
/**
* @var \AppBundle\Entity\Category
*
* @ORM\ManyToOne(targetEntity="AppBundle\Entity\Category")
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="parent_category_id", referencedColumnName="id")
* })
*/
private $parentCategory;
public function __toString()
{
return $this->getName();
}
/**
* Set name
*
* @param string $name
*
* @return Category
*/
public function setName($name)
{
$this->name = $name;
return $this;
}
/**
* Get name
*
* @return string
*/
public function getName()
{
return $this->name;
}
/**
* Set enabled
*
* @param boolean $enabled
*
* @return Category
*/
public function setEnabled($enabled)
{
$this->enabled = $enabled;
return $this;
}
/**
* Get enabled
*
* @return boolean
*/
public function getEnabled()
{
return $this->enabled;
}
/**
* Get id
*
* @return integer
*/
public function getId()
{
return $this->id;
}
/**
* Set parentCategory
*
* @param \AppBundle\Entity\Category $parentCategory
*
* @return Category
*/
public function setParentCategory(\AppBundle\Entity\Category $parentCategory = null)
{
$this->parentCategory = $parentCategory;
return $this;
}
/**
* Get parentCategory
*
* @return \AppBundle\Entity\Category
*/
public function getParentCategory()
{
return $this->parentCategory;
}
}
这是我到目前为止没有父类别选择:
<?php
// src/AppBundle/Admin/CategoryAdmin.php
namespace AppBundle\Admin;
use AppBundle\Repository\CategoryRepository;
use Sonata\AdminBundle\Admin\AbstractAdmin;
use Sonata\AdminBundle\Datagrid\ListMapper;
use Sonata\AdminBundle\Datagrid\DatagridMapper;
use Sonata\AdminBundle\Form\FormMapper;
class CategoryAdmin extends AbstractAdmin
{
protected function configureFormFields(FormMapper $formMapper)
{
$formMapper
->add('name', 'text')
->add('enabled', 'checkbox');
}
protected function configureDatagridFilters(DatagridMapper $datagridMapper)
{
$datagridMapper->add('name');
}
protected function configureListFields(ListMapper $listMapper)
{
$listMapper
->addIdentifier('name');
}
}
但现在我不得不添加父类别选择(不需要选择)。
答案 0 :(得分:1)
你试过这个:
protected function configureDatagridFilters(DatagridMapper $datagridMapper)
{
$datagridMapper
->add('name')
->add('parentCategory')
;
}
基本上,如果您的实体配置正确,Sonata将处理表单字段本身的类型,选项等。所以,只需添加属性&#34; parentCategory&#34;应按parentCategory添加过滤器,并使用所有现有类别创建下拉列表。
但是,老实说,你的问题应该被滥用,因为听起来你没有设法阅读Sonata管理员文档:https://sonata-project.org/bundles/admin/master/doc/index.html