Laravel 和 HTML 图片

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

我会把它提取到一个方法中,例如用户模型(或用户存储库,或类似的)。实际上,"check for username" 听起来也是一种方法。 "has an avatar" 也是。这意味着两种方法都需要头像路径,所以它也有自己的方法。例如,像这样:

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' => '...')) }}

我要强调的是,将所有这些都放入模型中可能并不总是您想做的,尽管对于较小的项目来说这完全没问题。但是将较小的部分提取到它们自己的方法中的想法很少是坏的,尤其是当它们包含单独的逻辑部分时。