.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;
}
}
そして、私のブレードの中で、私はちょうどそれをこのように呼ぼうとしました:
{{ $watchFolder }}
しかし、それは機能しませんでした、私は次のエラーを受け取ります:
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" => []
]
あなたの質問から、デバッグ目的でarrayを出力したいように見えますが、コメントしたように、単に<?php
および?>
ブレードテンプレート内のタグ。
<?php dd($array); ?>
ただし、ブレードには{!!
および!!}
。
ディレクトリ構造の出力を表示する準備ができたら、それをビューに割り当てる必要があります。
Reflectionで使用するには、2つの簡単な方法があります。コントローラー内:
class WatchController extends Controller
{
public function index(\Illuminate\Filesystem\Filesystem $filesystem)
{
$files = $filesystem->allFiles($watchFolderPath);
// Your code.
return view('name', ['files' => $files]);
}
}
または、 container から呼び出すには:
class WatchController extends Controller
{
public function index()
{
$files = app('files')->allFiles($watchFolderPath);
// Your code.
return view('name', ['files' => $files]);
}
}
また、shouldFilesystem を使用する必要があります。車輪を再発明する必要はありません–する必要があります マニュアルを読む 。
デバッグ目的でブレードにアレイを出力するには:
@php
var_dump($arr);
@endphp
次に、前述のforeachループを使用します。
@foreach
を使用する必要があります。
@foreach ($watchFolder as $key => $value)
Key: {{ $key }}
Value: {{ $value }}
@endforeach
または
@foreach ($watchFolder as $w)
{{ $w->name }}
@endforeach
私のように見えるかもしれないもののために...
echo implode("\n",$array);
それ以外の場合、その多次元配列
echo implode("\n",array_collapse($array));