【发布时间】:2017-02-17 08:43:09
【问题描述】:
我正在寻找一种在将数据传递给查看之前对其进行编辑的方法。
快速示例(仅用于演示):
假设我通过控制器将变量 $name 传递给视图。我想使用一些东西来传递另一个变量$message,其中包含Hello $name,例如Hello John,如果变量$name 是John。
我不想在控制器中发送第二个变量,因为我要使用很多控制器、视图,而且我想要对数据做的事情相当复杂。
我需要将它用于变量view("foobar", ["foo" => "bar"]) 和会话view("foobar")->with("foo", "bar")。
我尝试同时使用 Middleware 和 Service Provider 但问题是我无法访问发送的数据。
我现在能想到的唯一可能的解决方案是使用 View 布局,我将 include 到每个视图中并转换变量(使用类似 <? $message = "Hello $name"; ?> 在视图中),但这对我来说似乎不是正确的 MVC 解决方案。
谢谢大家的回答!
【问题讨论】:
-
View::share('foo', $foo);怎么样?您可以在控制器之外的任何地方使用它,$foo将在返回的视图中呈现。 -
关于嵌套消息,您可以在控制器中执行
view('message', 'Hello %s');并在视图中调用{{ sprintf($message, $foo) }}。 -
@Kyslik - 谢谢,但这并不是我真正想要的@MarcoFlorian - 我已经尝试过
View::share这正是我想要的,但我的问题是我不知道如何获取从控制器传递的数据来操作它们。在传递我的新变量之前,我需要将变量传递给视图。还有关于sprintf- 我要传递的变量是一个数组,所以我认为这不是这样做的方法(Hello $name 的例子只是一个例子,实际上我将使用数组)