我正在使用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';/>
答案 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 = auth()->user()->toArray();
return view('YOUR_VIEW', [
'user' => $user
]);
<img class="img-responsive" src="{{ $user['avatar'] }}" />
因此,当您想要使用头像时,可以直接从用户模型中调用$user->avatar
或$user['avatar']
。如果您具有生成用户头像URL的复杂逻辑,则可以编辑访问者中的代码。您查看并且控制器代码看起来更好。 :)