将Php变量与字符串连接起来放在img src中

4

我是使用 Laravel Blade。我想要在 Blade 代码中将一个 PHP 变量与字符串连接起来。

例如在 JS 中:

  <img class="img-responsive" src='http://example.com/'+ user_id +'/picture?type=square';/>

如何使用PHP变量来编写此内容?

  <img class="img-responsive" src='http://example.com/'. {{ $user_id}} .'/picture?type=square';/>
3个回答

5
你可以这样做:
<img src="http://example.com/{{ $user_id }}/picture?type=square">

或者:

<img src="{{ 'http://example.com/' . $user_id . '/picture?type=square'}}">

但是使用asset()助手总是一个好主意:

<img src="{{ asset($userId . '/picture?type=square') }}">

3
你需要像这样编写它:

您需要像这样编写:

 <img class="img-responsive" src='http://example.com/{{ $user_id }}/picture?type=square';/>

Blade 中,您不需要使用 . 进行连接。


1
如果您将字符串连接移到后面并可以调用$user->avatar来获取图像URL,会更加清晰。这可以使用访问器来完成。
当您在Laravel中使用模型时,可以使用的变量直接依赖于模型表的列。因此,您可以将模型对象传递给视图,并优雅地使用它。
然而,当结果字符串必须在可用之前进行转换(例如您所面临的情况),则需要添加一些逻辑。因此,我们进行字符串连接或其他语句以获得所需内容。但是,如果结果依赖于记录的一行,可以自动计算而不使代码变得混乱,那么这种方法更好吗?这就是访问器的作用。 访问器是定义记录的额外属性的一种方式。其中一个好处就是解决了您所面临的问题。
请先查看访问器语法,再阅读我的示例以获得全面的了解。https://laravel.com/docs/5.5/eloquent-mutators#accessors-and-mutators

以下是您需要执行的操作。

在用户模型文件中添加访问器。

protected $appends = ['avatar'];

public function getAvatarAttribute()
{
    // Here you generate user avatar url, $this refer to the User object
    return 'http://example.com/' . $this->id . '/picture?type=square';
}

在您的控制器中,将$user作为模型变量发送。
$user = auth()->user()->toArray();

return view('YOUR_VIEW', [
    'user' => $user
]);

在你的视图(blade文件)中,使用它!
<img class="img-responsive" src="{{ $user['avatar'] }}" />

所以,每当您想使用头像时,您可以直接从用户模型中调用$user->avatar$user['avatar']。如果您有复杂的逻辑来生成用户头像URL,则可以在访问器中编辑代码。这样您的视图和控制器代码会更加清晰。 :)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接