我是Laravel和OOP的新手,试图从旧的程序代码切换。出于可读性原因,我想用我的语言(意大利语)显示我的模型的一些日期:到目前为止,这就是我所做的:
'locale' => 'it'
档案中的config/app.php
setlocale(LC_TIME, config('app.locale'));
放入routes.php文件中,另请参阅我的previous question protected $dates = ['published_at', 'expires_at'];
放入我的模型中以利用Carbon {{ utf8_encode($record->published_at->formatLocalized('%A %d %B %Y')) }}
放入我的Blade视图中(注意:我必须使用utf8_encode()
,否则带有重音字母的日期(lunedì,martedì等)不会显示:不知道为什么,也无法找到答案谷歌搜索...这有什么原因吗?是Laravel还是Carbon bug?)
我的问题是关于最后一点:写那么久
{{ utf8_encode($record->published_at->formatLocalized('%A %d %B %Y')) }}
每次编码都是单调乏味的,而且编写
会更快(并且可重复使用){{ formatItalian($record->published_at) }}
(请注意,我需要在多个模型上使用它,所以我想我必须避免使用Accessors以获得更通用的方法)
实现这一目标的最佳方法是什么?我读到了自定义助手功能,这是一个好方法吗?正如我所说,我是Laravel的新手,从程序代码转换,并尝试使用最佳实践,对于这个愚蠢的问题感到抱歉......
由于
答案 0 :(得分:1)
虽然您应该(并且我强烈建议您这样做)打开一个错误来解决这个问题,但您可以轻松地扩展课程并使用它 作为一个例子
use Carbon\Carbon;
class MyCarbon extends Carbon
{
public function formatItalian($format)
{
return utf8_encode($this->formatLocalized($format))
}
}
请记住,这不是经过测试,只是为了给您提示。