【问题标题】:Laravel: Accepted to call a model function inside view?Laravel:接受在视图内调用模型函数吗?
【发布时间】:2013-08-22 17:15:44
【问题描述】:

在我的控制器中,我将一个数组返回到我的视图中,其中包含一个作者 ID,该 ID 需要使用另一个从数据库中获取的名称转换为名称,所以我想知道是否可以从我的视图中调用模型函数?

我要做的是将一个 ID 传递给从数据库中收集数据并返回具有正确 ID 的作者姓名的函数。

我在视图中是这样写的:

{{ User::getUserName($post['author']);  }}

最终结果是一个回显的全名。

【问题讨论】:

    标签: php laravel


    【解决方案1】:

    这是可能的,但这是糟糕的设计。

    在 MVC 中,控制器的作用是管理用户请求(当用户单击 GUI 元素执行操作时,作为 HTTP GET 或 POST 请求接收)。它的主要功能是调用和协调执行用户操作所需的必要资源/对象。通常控制器会从模型层为任务获取数据,然后选择合适的视图,或者在用户输入发生后操作模型。

    因此,通过直接从视图层调用您的模型,您可以绕过控制器中包含的应用程序逻辑,这很混乱(对于任何其他必须使用您的项目的开发人员来说都是意料之外的)。

    正确的 MVC 方式:在输出视图的控制器操作中获取模型,并让控制器将模型传递给您的视图。

    【讨论】:

      【解决方案2】:

      如果可能的话,对您来说最好的解决方案当然是传递一个集合或 Post 对象数组来查看而不是该数组。这将允许您使用 Post 和 User 之间的关系,并在您的视图中有类似的内容:

      {{ $post->author()->full_name }}
      

      这是在 MVC 架构中做事的首选方式

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-07-04
        • 2015-05-14
        • 2014-03-06
        • 2013-04-26
        • 1970-01-01
        • 2023-03-28
        • 2022-07-26
        • 2011-11-18
        相关资源
        最近更新 更多