首页 > 解决方案 > Laravel Blade 中的字符串替换

问题描述

我在 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

我怎样才能做到?

标签: phplaravellaravel-5

解决方案


您在这里有几个选择。您可以更新您的数据库数据,添加一个新列来存储拇指路径,或者修改现有路径。

这是使用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)


推荐阅读