CakePHP1.3,firefox上使用$this->Html->link时的奇怪行为

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',

您好

当使用以下语法时,我在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', 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;