【发布时间】:2018-02-16 09:05:47
【问题描述】:
我的 Symfony 4 项目中有以下实体
class Post
{
/**
* @var string
*
* @ORM\Column(name="date_string", type="string", length=11)
*/
private $dateString;
public funtion getDateString()
{
return $this->dateString;
}
}
我知道,我可以为此使用 \DateTime,但这对我的情况无关紧要 ;)
我想要的是,根据用户的本地化转换日期字符串。因此我创建了一个新的翻译并使用键“dateFormat”来设置每个本地化的日期格式。
messages.en.yaml
dateFormat: "m/d/Y"
messages.de.yaml
dateFormat: "d.m.Y"
我的问题是:获取格式化日期字符串的最佳做法是什么?我写了一个存储库方法,但我不喜欢这个解决方案。当我访问该方法时,我总是必须获取存储库,并且在 Twig 模板中使用它并不方便。
后存储库:
public function getFormattedDateString(Post $post): string
{
$dateTime = new \DateTime($post->getDateString());
$dateFormat = $this->translator->trans('dateFormat');
return $dateTime->format($dateFormat);
}
我宁愿直接从实体中使用该方法。像这样的:
$post->getFormattedDate();
但这不起作用,因为我需要将 TranslatorInterface 注入到实体中。这很糟糕。或者有没有办法修改 getDateString() 方法的结果? (注释?)
你会如何解决这个任务?非常感谢
【问题讨论】:
标签: php symfony date format entity