Я пытаюсь получить все изображения из каталога в массиве, а затем перетасовать его, а затем показать его в представлении в Symfony.Symfony: Shuffle array
Например:
/images/theme/404/01.gif
/images/theme/404/02.gif
/изображения/тема/404/03. gif
- это изображения, но я не знаю, сколько изображений есть. Я пытаюсь перетасовать эти изображения, чтобы показать их после.
Я сделал это:
Контроллер
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
]);
}
Посмотреть
{% for image in gifs %}
<div class="clearfix mosaicflow">
<div class="mosaicflow__item">
<img src="{{ asset('/images/theme/404/'~image) }}" />
</div>
</div>
{% endfor %}
Я получаю эту ошибку: ошибка Warning: Cannot use a scalar value as an array
ED IT
С этим контроллером у меня больше нет ошибки.
Контроллер
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
]);
}
Но у меня есть еще одна проблема, я не могу видеть изображения на странице. Когда я проверяю HTML, divs <div class="clearfix mosaicflow">
даже не здесь.
сделать 'дамп ($ errorFilesShuffled); 'перед тем, как вы отформатируете форму и опубликуете результат. Кроме того, вы перетасовываете массив до того, как будет установлен какой-либо элемент, поэтому это ничего не сделает. – KhorneHoly
Я написал ответ, который должен решить вашу проблему. – KhorneHoly