Laravel:接受在视图中调用模型函数


Laravel: Accepted to call a model function inside view?

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

我想做的是向函数传递一个ID,该函数从数据库中收集数据,并用正确的ID返回作者的姓名。

这就是我在视图中写它的方式:

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

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

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

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

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

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

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

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

这是MVC架构中的首选方式