Je veux afficher un tableau dans mon .blade.php, mais cela ne fonctionne pas correctement, mon contrôleur ressemble à ceci:
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;
}
}
Et à l'intérieur de ma lame, j'ai juste essayé de l'appeler comme ceci:
{{ $watchFolder }}
mais cela n'a pas fonctionné, j'obtiens l'erreur suivante:
htmlentities () s'attend à ce que le paramètre 1 soit une chaîne, un tableau étant donné
Edit: Le tableau que j'obtiens montre tous les dossiers/fichiers avec sous-dossier dans un répertoire. (utilisé dd ())
Actuellement, cela ressemble à ceci:
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" => []
]
D'après votre question, il semble que vous souhaitiez sortir le array à des fins de débogage qui, comme je l'ai commenté, vous pouvez simplement utiliser <?php
et ?>
balises dans vos modèles de lame.
<?php dd($array); ?>
Cependant, blade a une paire de balises de sortie brute qui est {!!
et !!}
.
Une fois que vous êtes prêt à afficher la sortie de votre structure de répertoires, vous devez l'affecter à votre vue.
Il y a 2 façons rapides de l'utiliser soit avec Reflection; à l'intérieur de votre contrôleur:
class WatchController extends Controller
{
public function index(\Illuminate\Filesystem\Filesystem $filesystem)
{
$files = $filesystem->allFiles($watchFolderPath);
// Your code.
return view('name', ['files' => $files]);
}
}
Ou pour l'appeler depuis le conteneur :
class WatchController extends Controller
{
public function index()
{
$files = app('files')->allFiles($watchFolderPath);
// Your code.
return view('name', ['files' => $files]);
}
}
De plus, vous devez utiliser Filesystem , il n'est pas nécessaire de réinventer la roue - Vous devez lire le manuel .
Pour simplement sortir le tableau dans la lame à des fins de débogage:
@php
var_dump($arr);
@endphp
Ensuite, utilisez une boucle foreach comme mentionné.
Tu devrais utiliser @foreach
:
@foreach ($watchFolder as $key => $value)
Key: {{ $key }}
Value: {{ $value }}
@endforeach
Ou
@foreach ($watchFolder as $w)
{{ $w->name }}
@endforeach
Pour ceux qui pourraient venir me ressembler ...
echo implode("\n",$array);
sinon si son tableau multidimensionnel
echo implode("\n",array_collapse($array));