Laravel - 如何将数组提取到变量并在刀片中使用它们

Posted

技术标签:

【中文标题】Laravel - 如何将数组提取到变量并在刀片中使用它们【英文标题】:Laravel - how to extract an array to variables and use them in blade 【发布时间】:2020-06-15 06:38:57 【问题描述】:

我们可以在 laravel 视图中提取一个数组吗?

例如考虑这个:

我们已经说过需要将控制器中的 20 个变量传递给 blade,现在我们当然可以像这样使用 compact 传递这些变量:

return view('someview', compact('var_a', 'var_b', 'var_c', 'var_d' ....));

但是有没有办法我们可以移动数组中的所有变量,然后将其传递给刀片,然后以某种方式将其提取到刀片中,如下所示:

$data = array('var_a' => 'value', 'var_b' => 'value', 'var_c' => 'value', 'var_d' => 'value', );
return view('someview')->with($data);

然后像这样在刀片访问中:

$var_a $var_b  $var_c

就像我们在 php 中有 extract() 函数一样,我只是想在刀片中使用它

我不想像这样访问索引:

 $data['var_a'] 

我已经看到并受到 opencart 中使用的类似语法的启发

【问题讨论】:

【参考方案1】:

是的,这很简单,你可以这样做

$data = ['var1' => 'value', 'var2' => 'value'];

然后

return view('someview', $data);

【讨论】:

【参考方案2】:

你可以通过多种方式做到这一点,我会写两种方法来做到这一点

方式 1:

在控制器中:

$data = array('var_a' => 'hello', 'var_b' => 'bye', 'var_c' => 'ok');
return view('someview', compact('data'));

那么您必须使用extract() PHP 内置函数(有关更多信息,请参阅此link) 然后在someview.blade.php文件中添加如下代码:

@php
   extract($data)
@endphp

<h1>$var_a</h1><br>
<h2>$var_b</h2><br>
<h3>$var_c</h3><br>

方式 2:

在控制器中:

$data = array('var_a' => 'hello', 'var_b' => 'bye', 'var_c' => 'ok');
return view('someview', $data);

你不必再做任何事情,Larval 自己会做第一种方式。

【讨论】:

【参考方案3】:

这是您的简单解决方案

$data = array('var_a' => 'value of var_a', 'var_b' => 'value of var_b', 'var_c' => 'value of var_c', 'var_d' => 'value of var_d',);
return view('someview',$data);

在 Blade 中你可以访问

$var_a $var_b  $var_c

【讨论】:

以上是关于Laravel - 如何将数组提取到变量并在刀片中使用它们的主要内容,如果未能解决你的问题,请参考以下文章

如何通过 Laravel 刀片在数组内打印数组?

如何将视图中的数组传递给 ajax 并在 Laravel 5 的控制器中访问?

如何将数组数据从控制器发送到刀片并访问 javascript 变量中的数据

Laravel - 将部分会话内容添加到数组中

如何将数据循环到laravel刀片javascript中的数组中?

Laravel 8:将刀片加载到另一个刀片时未定义的变量