我正在使用 VichUploader 在 symfony 项目中上传文件。在我使用的配置中(从文档复制):
service: vich_uploader.namer_property
options: { property: 'slug'}
在我的实体中,我使用 Gedmo/Sluggable 自动生成 slugs:
/**
* @Gedmo\Slug(fields={"title"}, updatable=false)
* @ORM\Column(type="string", length=100, nullable=false)
*/
protected $slug;
但是当尝试保存实体时,我收到以下错误 500:
无法生成文件名:属性段为空。
如果我将属性设置为“标题”,它就可以工作。我是否忘记了配置参数或其他让它与 Gedmo slug 一起工作的东西?
我现在遇到了同样的问题,作为解决方法,我稍微更改了实体类中的 slug getter:
use Gedmo\Sluggable\Util\Urlizer;
class Event
{
// ...
/**
* @var string
*
* @Gedmo\Slug(fields={"name"})
* @ORM\Column(name="slug", type="string", length=128, unique=true)
*/
private $slug;
// ...
public function getSlug()
{
if (!$this->slug) {
return Urlizer::urlize($this->getName());
}
return $this->slug;
}
}
这就成功了。
不幸的是,有几个缺点:
- 如果您想要更新注释中的 sluggable 行为以包含其他属性,则还必须更新 getter。
- 此方法缺乏对数据库的检查:数据库中是否已存在同名记录
urlizer
在 getter 中将无法向文件名添加增量,以前保存的文件可能会被覆盖!作为解决方法,您可以添加unique=true
到可打块的属性。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)