在我的控制器中,我返回一个数组到我的视图中,其中包含一个作者ID,该ID需要转换为另一个从数据库中获取的名称,所以我想知道是否接受从我的视图内调用模型函数?Laravel:接受在视图内调用模型函数?
我想要做的是将ID传递给从数据库收集数据的函数,并返回具有正确ID的作者姓名。
这是我写的观点:
{{ User::getUserName($post['author']); }}
最终的结果是呼应的全名。
在我的控制器中,我返回一个数组到我的视图中,其中包含一个作者ID,该ID需要转换为另一个从数据库中获取的名称,所以我想知道是否接受从我的视图内调用模型函数?Laravel:接受在视图内调用模型函数?
我想要做的是将ID传递给从数据库收集数据的函数,并返回具有正确ID的作者姓名。
这是我写的观点:
{{ User::getUserName($post['author']); }}
最终的结果是呼应的全名。
这是可能的,但它是糟糕的设计。
在MVC中,控制器的作用是管理用户请求(当用户单击GUI元素执行操作时,作为HTTP GET或POST请求接收)。其主要功能是调用和协调执行用户操作所需的必要资源/对象。通常,控制器将从任务的模型层获取数据,然后选择适当的视图,或在用户输入发生后操作模型。因此,通过从视图层直接调用模型,可以规避控制器中包含的应用程序逻辑,这是凌乱的(并且对于任何其他开发人员而言,您必须使用您的项目)。
正确的MVC方式:在控制器操作中获取模型,输出视图并让控制器将模型传递给视图。
当然,如果可能的话,最好的解决方案是传递一个Post对象的集合或一个数组来查看而不是该数组。这将允许您使用POST和用户之间的关系,有这样的事情在你看来:
{{ $post->author()->full_name }}
这是做事情的MVC架构的首选方式