Joh*_*acy 9 php arrays laravel blade
我想在我的.blade.php中显示一个数组,但它无法正常工作,所以我的控制器看起来像这样:
class WatchController extends Controller
{
public function index()
{
$watchFolderPath = 'C:\\xampp\\htdocs\\Pro\\rec\\';
$watchFolder = $this->dirToArray($watchFolderPath);
return view('watch.new')->with('watchFolder', $watchFolder);
}
# Get Directories of Path as Array
function dirToArray($dir) {
$result = array();
$cdir = scandir($dir);
foreach ($cdir as $key => $value)
{
if (!in_array($value,array(".","..")))
{
if (is_dir($dir . DIRECTORY_SEPARATOR . $value))
{
$result[$value] = $this->dirToArray($dir . DIRECTORY_SEPARATOR . $value);
}
else
{
$result[] = $value;
}
}
}
return $result;
}
}
Run Code Online (Sandbox Code Playgroud)
在我的刀片中,我只是试着这样称呼它:
{{ $watchFolder }}
Run Code Online (Sandbox Code Playgroud)
但它没有用,我收到以下错误:
htmlentities()期望参数1为字符串,给定数组
编辑:我得到的数组显示目录中包含子文件夹的所有文件夹/文件.(用过dd())
目前它看起来像这样:
array:6 [?
123123 => array:2 [?
"subfolder1" => array:1 [?
0 => "video.mpg"
]
"subfolder2" => array:1 [?]
]
789 => array:2 [?]
"folder1" => array:2 [?]
"folder2" => array:2 [?]
"folder3" => array:2 [?]
"folder1" => []
]
Run Code Online (Sandbox Code Playgroud)
你应该使用@foreach:
@foreach ($watchFolder as $key => $value)
Key: {{ $key }}
Value: {{ $value }}
@endforeach
Run Code Online (Sandbox Code Playgroud)
或者
@foreach ($watchFolder as $w)
{{ $w->name }}
@endforeach
Run Code Online (Sandbox Code Playgroud)
从您的问题看来,似乎您想要输出数组用于调试目的,正如我所评论的那样,您只需在刀片模板中使用<?php和?>标记即可.
<?php dd($array); ?>
Run Code Online (Sandbox Code Playgroud)
但是,刀片有一个原始输出标签对,它是{!!和!!}.
准备好显示目录结构的输出后,应将其分配给视图.
使用Reflection有2种快速使用方法; 在你的控制器内:
class WatchController extends Controller
{
public function index(\Illuminate\Filesystem\Filesystem $filesystem)
{
$files = $filesystem->allFiles($watchFolderPath);
// Your code.
return view('name', ['files' => $files]);
}
}
Run Code Online (Sandbox Code Playgroud)
或者从容器中调用它:
class WatchController extends Controller
{
public function index()
{
$files = app('files')->allFiles($watchFolderPath);
// Your code.
return view('name', ['files' => $files]);
}
}
Run Code Online (Sandbox Code Playgroud)
你也应该使用Filesystem,不需要重新发明轮子 - 你应该阅读手册.
仅在刀片中输出阵列以进行调试:
@php
var_dump($arr);
@endphp
Run Code Online (Sandbox Code Playgroud)
然后使用如上所述的foreach循环。
小智 5
对于那些可能看起来像我一样的人
echo implode("\n",$array);
Run Code Online (Sandbox Code Playgroud)
否则如果它的多维数组
echo implode("\n",array_collapse($array));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
48618 次 |
| 最近记录: |