Ich versuche, alle Bilder aus einem Verzeichnis in einem Array zu haben, dann mischen und dann in der Ansicht in Symfony anzeigen.Symfony: Shuffle ein Array
Zum Beispiel:
/images/theme/404/01.gif
/images/theme/404/02.gif
/images/Thema/404/03. gif
sind die Bilder, aber ich weiß nicht, wie viele Bilder es gibt. Ich versuche, diese Bilder zu mischen, um sie danach zu zeigen.
Ich tat dies:
-Controller
public function showAction()
{
$dir = $this->get('kernel')->getRootDir() . '/../web/images/theme/404/';
$dh = opendir($dir);
$errorFiles = array();
$errorFilesShuffled = shuffle($errorFiles);
while (false !== ($filename = readdir($dh)))
if ($filename != '.' && $filename != '..' && $filename[0] != '.')
$errorFilesShuffled[] = $filename;
return $this->render('errors/show.html.twig', [
'gifs' => $errorFilesShuffled
]);
}
Ansicht
{% for image in gifs %}
<div class="clearfix mosaicflow">
<div class="mosaicflow__item">
<img src="{{ asset('/images/theme/404/'~image) }}" />
</div>
</div>
{% endfor %}
ich diesen Fehler Fehler: Warning: Cannot use a scalar value as an array
ED IT
Mit diesem Controller habe ich den Fehler nicht mehr.
-Controller
public function showAction()
{
$dir = $this->get('kernel')->getRootDir() . '/../web/images/theme/404/';
$dh = opendir($dir);
$errorFiles = array();
while (false !== ($filename = readdir($dh)))
if ($filename != '.' && $filename != '..' && $filename[0] != '.')
$errorFiles[] = $filename;
$errorFilesShuffled = shuffle($errorFiles);
return $this->render('errors/show.html.twig', [
'gifs' => $errorFilesShuffled
]);
}
Aber ich ein anderes Problem haben, kann ich sehen, die Bilder auf der Seite nicht. Wenn ich den HTML-Code überprüfe, sind die divs <div class="clearfix mosaicflow">
nicht einmal hier.
tun, um eine 'dump ($ errorFilesShuffled); 'Bevor Sie das Formular rendern und das Ergebnis veröffentlichen. Außerdem mischen Sie das Array, bevor Elementelemente gesetzt sind, was nichts bringt. – KhorneHoly
Ich habe eine Antwort geschrieben, die Ihr Problem lösen sollte. – KhorneHoly