在img src

时间:2018-02-12 08:08:04

标签: php image laravel concatenation laravel-blade

我正在使用Laravel刀片。我想将一个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 个答案:

答案 0 :(得分:4)

你可以这样做:

<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') }}">

答案 1 :(得分:2)

你需要这样写:

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

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

答案 2 :(得分:1)

如果将字符串连接移到后面并且可以调用$user->avatar来获取图像网址,那将会更清晰。这可以使用Accessors完成。

在Laravel中使用模型时,可以使用的变量直接依赖于模型表的列。因此,您可以传递模型对象以便正常查看和使用它。

但是,当结果字符串必须在可用之前进行转换时,就像你所面对的那样,那么我们需要在其中添加一些逻辑。所以我们用字符串连接或任何语句来制作我们想要的东西。然而,如果结果依赖于记录的一行并且可以在不使代码变脏的情况下自动计算,那会更好吗?然后Accessors来了。

Accessors是一种为记录定义额外属性的方法。一个好处是你面临的问题。

在阅读我的示例之前,请先查看Accessors语法以查看整个图片。 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
]);

在您的视图(刀片文件)中,使用它!

<img class="img-responsive" src="{{ $user['avatar'] }}" />

因此,当您想要使用头像时,可以直接从用户模型中调用$user->avatar$user['avatar']。如果您具有生成用户头像URL的复杂逻辑,则可以编辑访问者中的代码。您查看并且控制器代码看起来更好。 :)