Laravel and HTML images


Laravel and HTML images

我想做的是查看用户是否有用户名并且他们的头像在头像目录中,如果是,则显示HTML图像,但如果不是,我希望它显示默认值,这就是我在下面拥有的。我想看看是否有人可以帮助我了解什么是最好的方法,这样我就不必在我的代码中有两个 HTML::image 标签。

@if(!empty($user->profile->username) && file_exists('/images/photos/avatars/'.$user->username))
@endif
{{ HTML::image('images/photos/profile-big.jpg', '', array('class' => 'img-circle img-offline img-responsive img-profile')) }}

我会将其提取到例如用户模型(或用户存储库或类似)的方法中。实际上,"检查用户名"听起来也像是一种方法。"有头像"也是如此。这意味着两种方法将需要头像路径,因此它也有自己的方法。例如,像这样:

public function hasUsername() {
    return empty($this->profile->username);
}
public function avatarPath() {
    return '/images/photos/avatars/' . $this->username;
}
public function hasAvatar() {
    return file_exists($this->avatarPath());
}
public function avatar() {
    return $this->hasUsername() && $this->hasAvatar()
        ? $this->avatarPath()
        : 'images/photos/profile-big.jpg';
}

然后,在您看来,您可以做

{{ HTML::image($user->avatar(), '', array('class' => '...')) }}

我应该强调,将所有这些放在模型中可能并不总是你想做的,尽管对于一个较小的项目来说,这是完全可以的。但是,将较小的部分提取到自己的方法中的想法很少是坏的,尤其是当它们包含单独的逻辑片段时。