CakePHP1.3,firefox上使用$this->Html->link时的奇怪行为
您好 当使用以下语法时,我在firefox中得到了一个非常奇怪和不可预测的结果:CakePHP1.3,firefox上使用$this->Html->link时的奇怪行为,firefox,cakephp,Firefox,Cakephp,您好 当使用以下语法时,我在firefox中得到了一个非常奇怪和不可预测的结果: $this->Html->link($this->Html->div('p-cpt',$project['Project']['name']) . $this->Html->div('p-img',$this->Html->image('/img/projects/'.$project['Project']['slug'].'/project.thumb.jpg',
$this->Html->link($this->Html->div('p-cpt',$project['Project']['name']) . $this->Html->div('p-img',$this->Html->image('/img/projects/'.$project['Project']['slug'].'/project.thumb.jpg', array('alt'=>$project['Project']['name'],'width'=>100,'height'=>380))),array('controller' => 'projects', 'action' => 'view', $project['Project']['slug']),array('title' => $project['Project']['name'], 'escape' => false),false);
好吧,我知道它很大,但请容忍我
关键是要获得以下输出:
<a href="x" title="x">
<div class="p-ctp">Name</div>
<div class="p-img"><img src="z width="y" height="a" alt="d" /></div>
</a>
我不确定这是否在cakephp和html上都能正确验证,但除了firefox,它在其他任何地方都能正常工作。
你可以在这里看到结果:
要复制结果,请使用不同类别的表单,然后按search。总有一天会发生的
虽然大多数情况下,它会以应有的方式呈现,但有时会产生如下无效输出:
<a href="x" title="x"></a>
<div class="p-cpt">
<a href="x" title="x">name</a>
</div>
<div class="p-img">
<a href="x" title="x"><img src="x" width="x" height="x" alt="x" /></a>
</div>
看起来它在每个元素内重复链接
老实说,我使用这种语法的唯一原因是cakephp鼓励使用这种语法
任何帮助都将不胜感激:我猜有些项目的名称是空的。根据,如果将null作为第二个参数传递给div方法,它将不会生成结束标记,并且生成的标记将无效 上面粘贴的无效标记示例似乎来自Firebug,而不是页面源。使用页面源查看发送到浏览器的实际标记。锚定标记不会重复 我重写了你的代码,以便更好地看到发生了什么。将其复制到一个视图中,将“My Project”更改为null,并注意它将如何影响$name\u div变量: 我的项目将变成一个项目
好的,首先,永远不会有项目名称为空的情况。没有照片的情况也不会发生。另外,虽然我确实从firebug获得了输出,但顺便说一句,这是一个很好的观点!我又去了一次,产生了“坏”结果,这次从“页面源代码”获取了输出,看起来在页面源代码中我得到了正确的结果!!!!但是在firebug中,我选错了!!!总之,没有任何情况下项目名称或其他变量将为null,如果是这种情况,则有一个函数将用泛型数据替换null结果。谢谢你的回复
<?php
$project['Project']['name'] = 'My Project';
$project['Project']['slug'] = 'my-project';
$image = $this->Html->image(
'/img/projects/' . $project['Project']['slug'] . '/project.thumb.jpg',
array(
'alt' => $project['Project']['name'],
'width' => 100,
'height' => 380
)
);
$name_div = $this->Html->div('p-cpt', $project['Project']['name']);
$image_div = $this->Html->div('p-img', $image);
$link = $this->Html->link(
$name_div . $image_div,
array(
'controller' => 'projects',
'action' => 'view',
$project['Project']['slug']
),
array(
'title' => $project['Project']['name'],
'escape' => false
)
);
var_dump($image);
echo 'Notice what happens below if project name is null.';
var_dump($name_div);
var_dump($image_div);
var_dump($link);
echo $link;