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

时间:2014-03-06 20:38:32

标签: php laravel laravel-4

如何使用HTML::image()进行内联样式background-image,例如此html标记:

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

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

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

在公共目录中,我有imagesjscss个文件夹,我的公众是:

'public' => __DIR__.'/..',

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

3 个答案:

答案 0 :(得分:6)

你可以试试这个:

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

<强>更新

实际上,HTML::image()会生成<img />代码并且您正在使用div,如果您想使用HTML::div(),则可以创建custom macro

更新:我已创建此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>";
});

您可以在blade view中使用它作为:

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

输出:

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

渲染输出:

alt text

答案 1 :(得分:0)

使用以下功能解决此问题。这是假设图像存在。

public function inline($path)
{      
    $filetype = File::type( $path );
    $response = Response( File::get($path), 200 );
    $response->header('Content-Type', $filetype);
    return $response;
}

答案 2 :(得分:0)

我尝试了这个,并且奏效了

 background: url('{{asset('uploads/avatars/'.$employee->avatar)}}')