在刀片模板中调用Model-> Method()

时间:2013-05-31 08:06:01

标签: laravel laravel-4

我在Laravel 4.x论坛上问了这个问题,试图在没有运气的情况下在Google上找到答案。

我正在使用Eloquent加载一堆具有created_at属性的用户对象。默认的MySQL时间戳不是很易读,所以我认为将readableDate()方法添加到我的用户模型会很简洁,它会将值输出为“1分钟前”,“2天前”。 / p>

当我在我的刀片模板中调用方法时:$user->readableDate()我得到了所需的输出,但我的整个布局都被破坏了。

是否,或者是否可以从模板中调用模型方法?

4 个答案:

答案 0 :(得分:3)

如果您使用的是Laravel的Eloquent模型,则无需添加自定义方法来处理日期。默认情况下,created_atupdated_at等日期字段将作为Carbon objects处理,您可以使用人类可读的格式显示日期:

{{ $user->created_at->diffForHumans() }}

您可以使用getDates()方法为您的Eloquent模型添加其他date fields

答案 1 :(得分:2)

是的,刀片编译为PHP。 :)

你必须:

将您的用户传递给您的观点:

 return View::make('showUser')->with('user', $user);

然后使用它:

<hml><body>

    Last update: {{ $user->readableDate() }}

</body></hml>

答案 2 :(得分:0)

我可以假设您将其包裹在刀片代码{{code here}}中,或者您是否错过了该部分?

此外,应使用如下静态方法调用模型:

{{ User::readableDate() }}

答案 3 :(得分:0)

好吧,我想出来了。我试图做的是可能的,但它抛出了一个我看不到的错误。当我查看页面的来源时,通常的laravel错误HTML低于我的输出。 create_at字段中的默认值抛出了错误。