Laravel使用HTML :: image作为背景图像

Dol*_*rma 1 php laravel laravel-4

如何使用这样的html标签HTML::image()进行内联样式background-image:

这行是我的main.blade.php文件,这是我的模板的主要角色.

<div style="height: 45px;background-image:url('../public/images/header_pattern2.png');border-radius: 5px;position:relative">
Run Code Online (Sandbox Code Playgroud)

在main.blade.php我的页面查看正确的模板.但在重定向之后,如login.blade.php图像不显示.但切换到索引后我没有问题.

在公共目录中,我有images,js,css文件夹和我的公开是这样的:

'public' => __DIR__.'/..',
Run Code Online (Sandbox Code Playgroud)

我可以删除公共目录.如何转换background-image:url('../public/images/header_pattern2.png');为刀片HTML::image()标签?

The*_*pha 6

你可以试试这个:

<div style="height: 45px;background-image:url('{{ asset('images/header_pattern2.png') }}');border-radius: 5px;position:relative">
Run Code Online (Sandbox Code Playgroud)

更新:

实际上,HTML::image()生成一个<img />标签,你正在使用div,如果你想使用它,HTML::div()那么你可以创建一个自定义宏.

更新:我创建了这个custom macro:

/**
 * Param $attr : An array of styles
 * Param $html : HTML content for div
 * Returns HTML DIV
 */
HTML::macro('divWithBG', function($attr = array(), $html = ''){
    $style = 'style = ';
    foreach ($attr as $key => $value) {
        if($key == 'background-image') $style .= $key.':url(\'' . $value .'\');';
        else $style .= $key . ':' . $value .';';
    }
return "<div $style >$html</div>";
});
Run Code Online (Sandbox Code Playgroud)

您可以将其blade view用作:

{{ HTML::divWithBG(array('background-image' => asset('images/8_big.jpg'), 'height' => '45px', 'border-radius'=>'5px', 'position'=>'relative' )) }}
Run Code Online (Sandbox Code Playgroud)

输出:

<div style="background-image:url('http://blog.dev/images/8_big.jpg');height:45px;border-radius:5px;position:relative;"></div>
Run Code Online (Sandbox Code Playgroud)

渲染输出:

替代文字

  • 好吧,您可以使用服务提供商,但也可以将其保存在单独的文件中,例如`app/macros.php`并将代码粘贴到其他宏(如果可用)并将其包含在`global.php`中. (2认同)