似乎有两种最常用的方法将数据传递给视图,虽然有几个问题要求两个函数之间的区别,但我没有看到单个stackoverflow答案,它解释了它们是否可以互换,哪些更常用,如果它们不可互换,在什么情况下使用这两个功能.
compact()是一个标准的PHP函数,它从变量列表构建数组,将变量名称指定为数组元素键,将变量值指定为数组元素值.它可以用作将变量传递给Laravel中的视图的便捷方式,因为Laravel View::make()将接受键/值对数组的第二个参数.您可以轻松指定键/值对的数组,但PHP compact()提供了一种简单的方法.
$x = "Hello";
$y = "world";
$view = View::make('myViewName', compact('x', 'y');
Run Code Online (Sandbox Code Playgroud)
是相同的
$x = "Hello";
$y = "world";
$view = View::make('myViewName', ['x' => $x, 'y' => $y]);
Run Code Online (Sandbox Code Playgroud)
但是compact()你的变量必须已经存在.手动指定数组更灵活,因为您可以这样做
$x = "Hello";
$y = "world";
$view = View::make('myViewName', ['salutation' => $x, 'addressTo' => $y]);
Run Code Online (Sandbox Code Playgroud)
这将使变量叫$salutation和$addressTo刀片模板中,即使你原来的变量只是叫$x和$y.
或者你甚至可以做
$view = View::make('myViewName', ['salutation' => "Hello", 'addressTo' => "world"]);
Run Code Online (Sandbox Code Playgroud)
with()是特定于Laravel的,并且(在此View构建上下文中)允许您指定要传递给视图的各个键和值.主要区别在于您可以将键名称指定为您想要的任何内容(与使用您自己构建的数组作为第二个参数的方式非常相似View::make()),并且值可以是函数调用的直接返回.
$x = "Hello";
$y = "world";
$view = View::make('myViewName')->with('x', $x)->with('y', $y);
Run Code Online (Sandbox Code Playgroud)
要么
$view = View::make('myViewName')->with('x', "Hello")->with('y', "World");
Run Code Online (Sandbox Code Playgroud)
要么
$view = View::make('myViewName')
->with('salutation', "Hello")
->with('addressTo', "World");
Run Code Online (Sandbox Code Playgroud)
它基本上与传递用户构建的数组相同View::make(),但可以说更具可读性
在这两种情况下,键/值对(无论是通过第二个参数指定View::make()还是使用with())都是在刀片模板中提取的,其中键用于元素名称.
这两种方法甚至可以一起使用.
| 归档时间: |
|
| 查看次数: |
46 次 |
| 最近记录: |