我想用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标记。
有人可以帮助我吗?
答案 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));