我試圖從一個數組中的一個目錄中獲取所有圖像,然後對其進行洗牌,然後在Symfony的視圖中顯示它。Symfony:隨機數組
例如:
/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