Получение 404 изображений в общей папке с помощью пользовательской функции в Laravel - PullRequest
0 голосов
/ 29 октября 2019

Я пытаюсь использовать простую функцию для автоматического заполнения изображений на странице галереи, но получаю 404 на изображениях. Все остальное работает как положено.

Я использую материал css, и весь этот пух работает правильно. Я получаю правильное количество карточек с изображениями.

Путь отображается правильно, и в функции имя изображений генерируется без проблем. Я использую функцию {{asset}} в Laravel, и мои изображения находятся в общей папке, поэтому доступ не должен (?) Быть проблемой.

public static function addImg($dirname){
$images = scandir($dirname);
$ignore = Array(".", "..");
foreach($images as $curimg){
    if(!in_array($curimg, $ignore)) {
        echo "<div class='col s12 m6 l4'>
        <img src='{{asset({$dirname}{$curimg})}}' class='materialbox responsive-img card'>$curimg
    </div>";
    }
}       
}

, а вызов

{{$gallery::addImg('/css/img/')}}

Консольные шоу "GET http://127.0.0.1:8000/%7B%7Basset(~snip for privacy~/public/css/img/hero%20(2).jpg)%7D%7D 404 (Not Found)"

Ответы [ 2 ]

1 голос
/ 29 октября 2019

Вы используете синтаксис Blade в обычной строке. Это не будет проанализировано. Вы должны вернуть строку так, как вам нужно.

Любая необходимая интерполяция должна быть выполнена при определении строки, как и любой другой обычной строки в PHP.

$location = asset($dirname . $curimage);

echo "<img src='{$location}' ...>{$curimage}";

ТакжеВы звоните {{ $gallery::addImg(...) }}, который не возвращает ничего, что могло бы повторить Блейд. {{ }} предназначено для отображения в Blade, оно не просто для выполнения операторов PHP.

Это звучит как то, что вы можете сделать в пользовательской директиве Blade.

0 голосов
/ 30 октября 2019

Вы не можете использовать синтаксис blade-файлов внутри строки, потому что blade-сервер будет анализировать только файл .blade.php.

Но вы можете просто использовать простую конкатенацию php:

public static function addImg($dirname){
    $images = scandir($dirname);
    $ignore = Array(".", "..");
    foreach($images as $curimg){
        if (!in_array($curimg, $ignore)) {
            echo "<div class='col s12 m6 l4'>
            <img src='" . asset($dirname . $curimg) . "' class='materialbox responsive-img card'>$curimg
        </div>";
        }
    }       
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...