【发布时间】:2018-03-12 19:19:41
【问题描述】:
假设,我有一些 Model 和 updated_at 属性。我想在这样的模板中显示它
{{ $model->updated_at }}
这可以在很多地方使用,所以我不这样做
{{ $model->updated_at->format('d/m/Y H:i:s') }}
但是
public function getUpdatedAtAttribute($value)
{
return $value->format('d/m/Y H:i:s');
}
但是这个解决方案有一个大问题,我不能再在控制器中使用$model->updated_at,因为它返回的是字符串,而不是 Carbon 实例。
两种可能的解决方案
1.
public function getUpdatedAtFormatterAttribute($value)
{
return $this->updated_at->format('d/m/Y H:i:s');
}
在模板中
{{ $model->updated_at_formatted }}
2.
使用像this这样的包
class ModelPresenter extends Presenter {
public function updated_at()
{
return $this->updated_at->format('d/m/Y H:i:s');
}
}
和
{{ $model->present()->updated_at }}
从架构的角度来看,我认为第二个版本更简洁,但有一些经过验证的解决方案吗?这不仅仅是关于 Laravel,而是关于任何流行的 PHP 框架。
【问题讨论】:
-
嗨,我也有同样的问题。我想和你讨论一下……你有脸书之类的,我们可以聊天吗?我认为我已经为此制定了解决方案,但如果它也适用于您,想听听您的意见。
-
这个问题是 Yii2 还是 laravel 的?
-
Laravel 的更多内容,但我认为 Yii2 中也存在问题
-
我使用你的第一种方法,除非应用程序真的很大,我通常有一个存储库接口,并且在需要时我在存储库顶部实现一个“presenter”/“transformer”。
-
@devk 我想看看那个“presenter”/“transformer”你有脸书之类的吗?
标签: laravel model-view-controller architecture yii2