Php Symfony2.3必需的实体属性,而不是表单中的必需属性,如何动态默认该属性?
在Symfony2.3中,我试图将实体配置为如下所示 示例是一个基本页面实体 我有两个属性Php Symfony2.3必需的实体属性,而不是表单中的必需属性,如何动态默认该属性?,php,symfony,symfony-2.3,Php,Symfony,Symfony 2.3,在Symfony2.3中,我试图将实体配置为如下所示 示例是一个基本页面实体 我有两个属性 /** *@ORM\Column(type="string",length=255) *@Assert\NotBlank() */ protected $slug; /** *set slug *@return Campaign */ protected $slug; 及 虽然Slug在实体中是必需的,但在表单中不是必需的。我不希望它是必需的形式,因为它应该默认的标题,如果没有填写。除了手动检查
/**
*@ORM\Column(type="string",length=255)
*@Assert\NotBlank()
*/
protected $slug;
/**
*set slug
*@return Campaign
*/
protected $slug;
及
虽然Slug在实体中是必需的,但在表单中不是必需的。我不希望它是必需的形式,因为它应该默认的标题,如果没有填写。除了手动检查它并在控制器中调用它(如果没有填写),还有没有更好的更自动化的方式形成表单配置?对于此功能,我使用条令扩展 在此处了解如何实现这些功能的更多信息:
使用这种方法,要生成slug,您需要做的唯一一件事就是在实体中将属性定义为sluggable。发现最有组织的方法是使用事件订阅服务器。表单绑定后,如果slug为false,则调用set slug方法。这将允许它在实体上正确验证,但允许表单在不需要字段的情况下进行处理
public function setSlug($slug)
{
// if slug is false or empty, use the title instead
if ($slug == '' || $slug == false)
{
$slug = $this->getTitle();
}
$slug = preg_replace('/[\s-]+/', '-', trim($slug," -\t\n\r\0\x0B"));
$slug = preg_replace('/[^a-z0-9-]/', '', strtolower($slug) );
$this->slug = $slug;
return $this;
}