【发布时间】:2016-09-24 02:59:18
【问题描述】:
在我当前的项目中,我决定只创建一个可翻译的文件实体,并将其用于我拥有的所有图像/文档属性。对于翻译,我使用 Knp Doctrine Behaviors Translatable。所以这里是代码。
文件类:
class File
{
use ORMBehaviors\Translatable\Translatable;
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
public function __toString()
{
return (string)$this->id;
}
/**
* Get id
*
* @return integer
*/
public function getId()
{
return $this->id;
}
}
可翻译文件类:
class FileTranslation
{
use ORMBehaviors\Translatable\Translation;
/**
* @ORM\Column(type="string", length=255, nullable=true)
*/
public $name;
/**
* @ORM\Column(type="string", length=255, nullable=true)
*/
public $path;
/**
* @Assert\File()
*/
private $file;
/*
* Non tracked parameter
*/
public $folder;
/**
* Set name.
*
* @param string $name
*/
public function setName($name)
{
$this->name = $name;
}
/**
* Get name.
*
* @return string
*/
public function getName()
{
return $this->name;
}
/**
* Set path.
*
* @param string $path
*/
public function setPath($path)
{
$this->path = $path;
}
/**
* Get path.
*
* @return string
*/
public function getPath()
{
return $this->path;
}
/**
* Sets file.
*
* @param UploadedFile $file
*/
public function setFile(UploadedFile $file = null)
{
$this->file = $file;
}
/**
* Get file.
*
* @return UploadedFile
*/
public function getFile()
{
return $this->file;
}
/**
* Set folder
*
* @param string $folder
*
* @return File
*/
public function setFolder($folder)
{
$this->folder = $folder;
return $this;
}
/**
* Get folder
*
* @return File
*/
public function getFolder()
{
return $this->folder;
}
}
然后是如何在另一个实体(用户)中使用它来创建图像属性的示例:
class User
{
/**
* @ORM\OneToOne(targetEntity="File", cascade={"persist", "remove"})
* @ORM\JoinColumn(name="image_id", referencedColumnName="id", nullable=true)
* @Assert\Valid()
*/
private $image;
}
没什么新鲜的。我只是按照 Symfony/Knp 文档,它工作正常。但是,现在我想在每次为不同的实体创建像 $image 这样的新属性时添加不同的验证规则。这里最好的策略是什么?
例如,每次我尝试在 $image 属性中添加与文件相关的验证规则时,它都会说找不到文件。
【问题讨论】:
标签: validation symfony doctrine-orm constraints symfony-forms