【问题标题】:Laravel background-image:url is returning 1Laravel background-image:url 返回 1
【发布时间】:2016-05-27 10:12:46
【问题描述】:

我正在 Laravel 中制作一个 web 应用程序。我有以下代码sn-p:

<div class="user-info" style="background-image:url({{ asset(Auth::user()->partner->background) or '/images/default/background1.jpg'}})">

这是 HTML 中的结果:

<div class="user-info" style="background-image:url(1)">

我应该从数据库中得到以下内容:

images/backgrounds/HRVl7TXkAxlhASj14vAV.png

这很奇怪,因为如果我执行以下操作:

{{dd(Auth::user()->partner->background)}}

它实际上是dd() 来自数据库的文件名images/backgrounds/HRVl7TXkAxlhASj14vAV.png。为什么当我把它放在背景图像中时它会回显 1 而不是文件名:url?

【问题讨论】:

  • 你试过没有asset()吗?

标签: php laravel assets blade


【解决方案1】:

试试

{!! "'".asset(Auth::user()->partner->background)."'" or '/images/default/background1.jpg'!!}

编辑

有点乱,但应该可以工作

{!! Auth::user()->partner && Auth::user()->partner->background ? "'".asset(Auth::user()->partner->background)."'" : '/images/default/background1.jpg' !!}

我建议您为此功能在 User 中编写单独的方法。
像这样的:

public function background()
{
    // your awesome logic
    return $pathToBackground;
}

然后:

<div class="user-info" style="background-image:url('{!! asset(Auth::user()->background()) !!}');" >

【讨论】:

  • 这使它对我有用。但是,如果伙伴为空并且我尝试从空对象获取背景,我仍然会得到空对象引用异常(即使我使用的是or)。我使用您的解决方案和旧的isset($x) ? true : false 类型的代码让它工作。知道如何使用or 来实现这一点吗?
【解决方案2】:

试试

   <div class="user-info" style="background-image:url({{ asset(($background=Auth::user()->partner->background) ? $background :'/images/default/background1.jpg' )}})">

【讨论】:

    猜你喜欢
    • 2012-11-26
    • 2019-04-30
    • 2021-12-19
    • 1970-01-01
    • 2015-08-07
    • 2012-12-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多