在Cake文件中使用Helper Html->图像和Html->标记的img标记内的span标记

时间:2014-01-06 17:34:02

标签: php cakephp

我想用Htmlhelper

生成以下html代码
<a class="menu" href="/lib/movies/view/6">
          <span>Movie</span>
    <img src="img/icons/movie.png" alt="Movie">
</a>

我已经使用过此代码,但它不起作用

echo $this->Html->image("../img/icons/movie.png",
              array("alt" => "Movie",
              "url" => array("controller" => "movies", "action" => "view", 6),
              "class" => "menu",
              $this->Html->tag("span","movie")
              ));  
?>

它生成以下代码

<a href="/lib/movies/view/6"><img src="/contest2/img/../img/icons/movie.png" alt="Movie" class="tile" <span>Movie</span>="<span>Movie</span>" /></a>

你可以看到src既不是span标记

也不正确

当我编写没有$ this-&gt;标签的php代码时,它可以正常工作,但当然它不会创建span标记。

有人可以帮助我吗?

2 个答案:

答案 0 :(得分:2)

问题中的代码中存在一些错误。

正确使用图像功能

图像的路径与当前请求无关,要生成图像,请使用img文件夹的相对路径:

$this->Html->image("icons/movie.png");
// output <img src="/contest2/img/icons/movie.png" ...
                    ^............^ CakePHP added this automatically

或绝对网址(应用程序安装的绝对网址):

$this->Html->image("/img/icons/movie.png");
// output <img src="/contest2/img/icons/movie.png" ...
                    ^........^ CakePHP added this automatically (the application root url)

使用Html->link

问题中代码的主要问题是尝试使用过多代码重载image函数 - image函数有一个用于定义链接内部简单图像的url选项,还有更多内容分手了:

$image = $this->Html->image(...);
echo $this->Html->link($image, $url, array('escape' => false));

在这种情况下,这意味着:

$image = $this->Html->image("icons/movie.png", array('alt' => 'Movie'));
echo $this->Html->link(
    '<span>Movie</span>' . $image, 
    $url, 
    array('class' => 'menu', 'escape' => false)
);

答案 1 :(得分:1)

请尝试以下方法:

 echo $this->Html->link($this->Html->tag('span', 'Movie') . $this->Html->image('../img/icons/movie.png', array('alt' => 'Movie')), array('controller' => 'movies', 'action' => 'view', 6), array('class' => 'menu', 'escape' => false));