如何为 sluggable 列注解@groups
How annotation @groups for the sluggable column
我在 symfony 3.3 中工作:
我需要将 @Groups 注释添加到 slug 字段(使用 ORMBehaviors\Sluggable\Sluggable 创建),以便我可以将此字段传递给我将在组中指定的其他实体。
我该怎么做?
这是实体 'foo':
/**
* @var int
*
* @ORM\Id
* @ORM\GeneratedValue
* @ORM\Column(type="integer")
*
* @Groups({"advertisingSpace"})
*/
private $id;
/**
* @var string
*
* @ORM\Column(type="string", length=4)
*
* @Groups({"advertisingSpace"})
*/
private $code;
/**
* @var string
*
* @ORM\Column(type="string", length=255)
*
* @Groups({"advertisingSpace"})
*/
private $description;
/**
* @Vich\UploadableField(mapping="advertisingspacecategory_icon", fileNameProperty="icon")
*
* @var File
*/
private $iconFile;
/**
* @var string
*
* @ORM\Column(type="string", length=255)
*
* @Groups({"advertisingSpace"})
*/
private $icon;
/**
* @var array
*
* @ORM\OneToMany(
* targetEntity="AppBundle\Entity\AdvertisingSpace",
* mappedBy="category"
* )
*/
private $advertisingSpaces;
/**
* @return int
*/
public function getId()
{
return $this->id;
}
/**
* @return string
*/
public function getIcon()
{
return $this->icon;
}
/**
* @param string $icon
*
* @return AdvertisingSpaceCategory
*/
public function setIcon($icon)
{
$this->icon = $icon;
return $this;
}
/**
* @param File|\Symfony\Component\HttpFoundation\File\UploadedFile $iconFile
*
* @return AdvertisingSpaceCategory
*/
public function setIconFile(File $iconFile = null)
{
$this->iconFile = $iconFile;
if ($iconFile) {
$this->updatedAt = new \DateTimeImmutable();
}
return $this;
}
/**
* @return File|null
*/
public function getIconFile()
{
return $this->iconFile;
}
/**
* @param int $id
*
* @return AdvertisingSpaceCategory
*/
public function setId($id)
{
$this->id = $id;
return $this;
}
/**
* @return string
*/
public function getCode()
{
return $this->code;
}
/**
* @param string $code
*
* @return AdvertisingSpaceCategory
*/
public function setCode($code)
{
$this->code = $code;
return $this;
}
/**
* @return array
*/
public function getAdvertisingSpaces()
{
return $this->advertisingSpaces;
}
/**
* @param array $advertisingSpaces
*
* @return AdvertisingSpaceCategory
*/
public function setAdvertisingSpaces($advertisingSpaces)
{
$this->advertisingSpaces = $advertisingSpaces;
return $this;
}
/**
* @return string
*/
public function getDescription()
{
return $this->description;
}
/**
* @param string $description
*
* @return $this
*/
public function setDescription($description)
{
$this->description = $description;
return $this;
}
/**
* @return array
*/
public function getSluggableFields()
{
return [ 'slug' ];
}
/**
* @param string $values
*
* @return string
*/
public function generateSlugValue($values)
{
return implode('-', $values);
}
没有私有 slug 声明,因为我可以将 @groups 注释归因于?
您应该安装 JMS Serializer Bundle 并在您自己的 getSlug()
方法上使用 @VirtualProperty
注释,如下所示
/**
* @VirtualProperty
* @Groups({"advertisingSpace"})
*/
public function getSlug()
{
return parent::getSlug();
}
我还是通过创建一个新的字符串变量解决了这个问题(例如"SlugName"):
/**
* @var string
*
* @Groups({"advertisingSpace"})
*/
private $slugName;
我在其中插入了群组注释,returns 来自其 getter 的原始 'slug' 字段:
/**
* @ return string
*/
public function getSlugName(): string
{
return $this->slug;
}
我在 symfony 3.3 中工作:
我需要将 @Groups 注释添加到 slug 字段(使用 ORMBehaviors\Sluggable\Sluggable 创建),以便我可以将此字段传递给我将在组中指定的其他实体。 我该怎么做?
这是实体 'foo':
/**
* @var int
*
* @ORM\Id
* @ORM\GeneratedValue
* @ORM\Column(type="integer")
*
* @Groups({"advertisingSpace"})
*/
private $id;
/**
* @var string
*
* @ORM\Column(type="string", length=4)
*
* @Groups({"advertisingSpace"})
*/
private $code;
/**
* @var string
*
* @ORM\Column(type="string", length=255)
*
* @Groups({"advertisingSpace"})
*/
private $description;
/**
* @Vich\UploadableField(mapping="advertisingspacecategory_icon", fileNameProperty="icon")
*
* @var File
*/
private $iconFile;
/**
* @var string
*
* @ORM\Column(type="string", length=255)
*
* @Groups({"advertisingSpace"})
*/
private $icon;
/**
* @var array
*
* @ORM\OneToMany(
* targetEntity="AppBundle\Entity\AdvertisingSpace",
* mappedBy="category"
* )
*/
private $advertisingSpaces;
/**
* @return int
*/
public function getId()
{
return $this->id;
}
/**
* @return string
*/
public function getIcon()
{
return $this->icon;
}
/**
* @param string $icon
*
* @return AdvertisingSpaceCategory
*/
public function setIcon($icon)
{
$this->icon = $icon;
return $this;
}
/**
* @param File|\Symfony\Component\HttpFoundation\File\UploadedFile $iconFile
*
* @return AdvertisingSpaceCategory
*/
public function setIconFile(File $iconFile = null)
{
$this->iconFile = $iconFile;
if ($iconFile) {
$this->updatedAt = new \DateTimeImmutable();
}
return $this;
}
/**
* @return File|null
*/
public function getIconFile()
{
return $this->iconFile;
}
/**
* @param int $id
*
* @return AdvertisingSpaceCategory
*/
public function setId($id)
{
$this->id = $id;
return $this;
}
/**
* @return string
*/
public function getCode()
{
return $this->code;
}
/**
* @param string $code
*
* @return AdvertisingSpaceCategory
*/
public function setCode($code)
{
$this->code = $code;
return $this;
}
/**
* @return array
*/
public function getAdvertisingSpaces()
{
return $this->advertisingSpaces;
}
/**
* @param array $advertisingSpaces
*
* @return AdvertisingSpaceCategory
*/
public function setAdvertisingSpaces($advertisingSpaces)
{
$this->advertisingSpaces = $advertisingSpaces;
return $this;
}
/**
* @return string
*/
public function getDescription()
{
return $this->description;
}
/**
* @param string $description
*
* @return $this
*/
public function setDescription($description)
{
$this->description = $description;
return $this;
}
/**
* @return array
*/
public function getSluggableFields()
{
return [ 'slug' ];
}
/**
* @param string $values
*
* @return string
*/
public function generateSlugValue($values)
{
return implode('-', $values);
}
没有私有 slug 声明,因为我可以将 @groups 注释归因于?
您应该安装 JMS Serializer Bundle 并在您自己的 getSlug()
方法上使用 @VirtualProperty
注释,如下所示
/**
* @VirtualProperty
* @Groups({"advertisingSpace"})
*/
public function getSlug()
{
return parent::getSlug();
}
我还是通过创建一个新的字符串变量解决了这个问题(例如"SlugName"):
/**
* @var string
*
* @Groups({"advertisingSpace"})
*/
private $slugName;
我在其中插入了群组注释,returns 来自其 getter 的原始 'slug' 字段:
/**
* @ return string
*/
public function getSlugName(): string
{
return $this->slug;
}