奏鸣曲类型模型 - 父类别
Sonata type model - Parent Category
我正在尝试添加带有奏鸣曲形式的类别。我的数据库中的 table 类别 如下所示:
table 包含:
- id
- 名字
- 启用
- parent_category_id
parent_category_id可以为空。所以我想要一个 select 列表,您可以在其中选择父类别。但是我对如何创建它有点困惑。我的实体 类别 如下所示:
<?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;
}
}
这是我目前没有父类别的情况 select:
<?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');
}
}
但现在我坚持添加父类别 select(select 不需要)。
你试过这个吗:
protected function configureDatagridFilters(DatagridMapper $datagridMapper)
{
$datagridMapper
->add('name')
->add('parentCategory')
;
}
基本上,如果您的实体配置正确,Sonata 将处理表单字段本身的类型、选项等。因此,只需添加 属性 "parentCategory" 即可按 parentCategory 添加过滤器并创建包含所有现有类别的下拉列表。
但是,老实说,您的问题应该被忽略,因为听起来您没有设法阅读 Sonata Admin 文档:https://sonata-project.org/bundles/admin/master/doc/index.html
我正在尝试添加带有奏鸣曲形式的类别。我的数据库中的 table 类别 如下所示:
table 包含:
- id
- 名字
- 启用
- parent_category_id
parent_category_id可以为空。所以我想要一个 select 列表,您可以在其中选择父类别。但是我对如何创建它有点困惑。我的实体 类别 如下所示:
<?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;
}
}
这是我目前没有父类别的情况 select:
<?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');
}
}
但现在我坚持添加父类别 select(select 不需要)。
你试过这个吗:
protected function configureDatagridFilters(DatagridMapper $datagridMapper)
{
$datagridMapper
->add('name')
->add('parentCategory')
;
}
基本上,如果您的实体配置正确,Sonata 将处理表单字段本身的类型、选项等。因此,只需添加 属性 "parentCategory" 即可按 parentCategory 添加过滤器并创建包含所有现有类别的下拉列表。
但是,老实说,您的问题应该被忽略,因为听起来您没有设法阅读 Sonata Admin 文档:https://sonata-project.org/bundles/admin/master/doc/index.html