<?php
$radifHa = array();
foreach ($akhbars as $akhbar) {
$radif = array();
$radif[] = $this->Html->tag('h4', h($akhbar['Akhbar']['onvan']));
$radifInfo = array();
$radifInfo[] = h($akhbar['Akhbar']['created']);
$radifInfo[] = $this->Html->tag('span', ':', array('class' => 'separator'));
$radifInfo[] = 'by';
$radifInfo[] = $this->Html->link($akhbar['User']['esmekochak'], array('controller' => 'users', 'action' => 'view', $akhbar['User']['id']));
$radifInfo[] = $this->Html->tag('span', ':', array('class' => 'separator'));
$radifInfo[] = '0 comments';
$radif[] = array(implode(' ', $radifInfo), array('class' => 'post_info'));
$radif[] = $this->Html->div('desc_block', h($akhbar['Akhbar']['kholase']));
}
$radifHa[] = $radif;
if (!empty($radifHa)) {
echo $this->Html->div('blog_post', h($radifHa));
}
?>
我收到此错误
Notice (8): Array to string conversion [CORE\Cake\View\Helper\HtmlHelper.php, line 928]
我该如何解决这个问题?
我在Akhbar的索引视图中。
修复此备用代码,但我想修复上面的代码,可以吗?
<?php foreach ($akhbars as $akhbar): ?>
<div class="blog_post">
<h4><?php echo h($akhbar['Akhbar']['onvan']);?></h4>
<div class="post_info">
<?php echo h($akhbar['Akhbar']['created']);?>
<span class="separator">:</span>
By:<?php echo $this->Html->link($akhbar['User']['esmekochak'], array('controller' => 'users', 'action' => 'view', $akhbar['User']['id']));?>
<span class="separator">:</span>
0 comments
</div>
<div class="desc_block"><?php echo h($akhbar['Akhbar']['kholase']); ?></div>
</div>
<?php endforeach; ?>
答案 0 :(得分:1)
你并没有告诉我们完全哪一行给你的错误(在视图中,而不是帮助者),但错误本身确实告诉你很多关于发生了什么。您只是传递一个应该传递字符串的数组。
Html->div
接受Html->div(string, string, array)
,你正在做
echo $this->Html->div('blog_post', h($radifHa));
现在,。 h()函数说
string | array | object $ text要通过htmlspecialchars换行的文本。 也适用于数组和对象。数组将被映射并具有 所有元素都逃脱了。如果对象将被字符串转换 实现
__toString
方法。否则是班级名称 将被使用。
您正在将数组传递给h()
,您将获得一个带有元素转义的映射数组。您可以看到该函数here的代码。第177行,它返回一个数组。因为Html->div
并不喜欢数组作为第二个参数,所以它会抱怨。
你能做什么?不要使用阵列。在使用div之前自己展平数组,或者以其他方式而不是在数组中组织该字符串(比如在foreach中连接结果字符串而不是将它们存储在$radifHa
中)。