php - Doctrine Translatable:如果可翻译字段不存在,如何返回字段的默认值
问题描述
我使用 Doctrine Translatable 来翻译我的某个实体。例如:我有实体“类别”,该实体有一个可翻译字段 - “名称”:
/**
* @ORM\Entity(repositoryClass="AppBundle\Repository\CategoryRepository")
* @ORM\Table(name="categories")
*/
class Category implements EntityUploadImageInterface, Translatable
{
/**
* @ORM\Id
* @ORM\GeneratedValue
* @ORM\Column(type="integer")
*/
private $id;
/**
* @Gedmo\Translatable
* @ORM\Column(type="string", length=100)
*
* @var string
*/
private $name = '';
/// ...
}
这是一项很好的工作,但是当我切换到另一种语言并尝试使用可翻译字段时,我给出了空值,因为该实体的可翻译记录不存在。
问题:如果可翻译记录不存在,如何获取默认值字段?
解决方案
您可以使用事件。
/**
* @ORM\Entity(repositoryClass="AppBundle\Repository\CategoryRepository")
* @ORM\Table(name="categories")
* @ORM\HasLifecycleCallbacks
*/
class Category implements EntityUploadImageInterface, Translatable
{
/**
* @ORM\Id
* @ORM\GeneratedValue
* @ORM\Column(type="integer")
*/
private $id;
/**
* @Gedmo\Translatable
* @ORM\Column(type="string", length=100)
*
* @var string
*/
private $name = '';
/** @ORM\PostLoad */
public funcion setDefaultName()
{
if(empty($this->getName)) {
$this->setName('some default value');
}
}
/// ...
}
推荐阅读
- php - 如何通过键和值过滤php关联数组?
- sql - 查找表 T-SQL 中每一列中缺失的百分比
- r - RStudio 中的代码导航如何工作?
- python - 我的 python 文本编辑器没有覆盖我的文件
- profiling - 如何分析 Fish shell init?
- javascript - 猫鼬使用 findOneAndUpdate 并且只返回数组中更新的元素
- powershell - Powershell Runspace - 无法识别新对象
- flask - 烧瓶 CSP ( Content-Security-Policy ) 针对跨站点脚本等攻击的最佳实践
- c# - 在datagridview中着色行的问题
- javascript - 如何在文件夹中获取最近下载的文件