Строка заменяет в Laravel Blade - PullRequest
0 голосов
/ 07 июня 2019

У меня есть проект в Laravel 5.8.

У меня есть этот код:

<a href="{{ route('user', ['url_address' => $user->url_address, 'id' => $user->id]) }}"><img
                                                src="{{ $user->images->first()->path ??  $placeholder }}"
                                                class="img-responsive center" alt="{{ $user->name }}"></a>

Это возвращает меня:

<a href="http://name.com/user/name/2"><img src="upload/images/UserImage/c561b1742783ed038521c488d1cd59a1.jpg" class="img-responsive center" alt="angel"></a>

Мне нужно заменить это:

upload/images/UserImage/c561b1742783ed038521c488d1cd59a1.jpg

до:

upload/images/UserImage/thumbs3/c561b1742783ed038521c488d1cd59a1.jpg

Как мне это сделать?

1 Ответ

1 голос
/ 07 июня 2019

У вас есть несколько вариантов здесь.Вы можете обновить данные вашей БД, добавить новый столбец для хранения большого пальца или изменить существующий путь на месте.

Вот один из способов сделать это, используя https://laravel.com/docs/5.8/helpers#method-str-replace-first

<?php
use Illuminate\Support\Str;

...

$search = 'upload/images/UserImage/';
$replace = 'upload/images/UserImage/thumbs3/';
$original = $user->images->first()->path;

$replaced = Str::replaceFirst($search, $replace, $original );

// Now, use `$replaced` as your image src. 
<a href="{{ route('user', ['url_address' => $user->url_address, 'id' => $user->id]) }}"> 
    <img src="{{ $replaced ??  $placeholder }}"
         class="img-responsive center" alt="{{ $user->name }}">
</a>

Я должен также отметить, что по моему опыту проще поддерживать систему, в которой все, что вы храните в БД, этоимя файла загруженного документа.В этом случае c561b1742783ed038521c488d1cd59a1.jpg.

Ваши представления затем определяют, какой каталог искать: ...public_path('upload/images/thumbs/' . $user->profile_image)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...