我在我的视图中有这个错误,无法找出问题是什么。
A PHP Error was encountered
Severity: Notice
Message: Undefined variable: c
Filename: views/commentsList.php
Line Number: 10
这是我的视图代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body>
<div id="commentsByParentId">
<?foreach($comments as $c):?>
<?=$c['comment']?>
<?endforeach?>
</div>
</body>
</html>
$comments
为来自控制器的阵列。$c
是循环变量,所以我不能理解为什么它捕获undef var错误。
public function viewCommentsListByParentId($parentid) {
$data = array();
$data = $this->em->getRepository('Entities'Comment')->findBy(array('parentid' => $parentid));
$comments = array();
for ($i=0; $i<count($data); $i++){
$comments[$i]['comment'] = $data[$i]->getComment();
}
$this->load->view('commentsList', $comments);
}
您的服务器允许<?
标记吗?有些配置没有,它们会把它们变成常规的html注释。试试<?php foreach($comments as $c): ?>
,看看是否能解决问题。
现在我们修复了这个错误,它不知道$comments是什么。这是因为在控制器中你将它定义为$commentsList:
输入<?php foreach($commentsList as $c): ?>
注意:你仍然不能使用<?
标签,因为这些是问题所在。
第二个编辑:
我查了CodeIgnitor的文档,它说你必须在$this->load->view('view_name', $data);
中包含数据是值的数组,其中键是视图中使用的变量名,值是该键的值。
那么试试这个:$this->load->view('view-name', array('comments' => $comments));
在视图中返回<?php foreach($comments as $c): ?>
查看详细信息
试试这个:
<?php
foreach($comments as $c){
echo $c['comment'];
}
?>
出现了奇怪的错误。当foreach循环中没有HTML时,为什么要使用PHP标记?还是生产代码不同?
您可以使用以下代码(变通)使代码工作:
<?php
foreach($comments as $key=>$c) {
if(isset($c) && isset($c['comment'])) {
echo $c['comment'];
} else {
echo 'Error at index ' . $key;
}
}
?>
大家,谢谢。我用这种方法解决了问题。我把控制器改成了这个。传递给控制器的对象数组似乎比传递给控制器的数组要好。
public function viewCommentsListByParentId($parentid) {
$data = array();
$data['comments'] = $this->em->getRepository('Entities'Comment')->findBy(array('parentid' => $parentid));
$this->load->view('commentsList', $data);
}
改变了我的观点
<?php foreach($comments as $c):?>
<?=$c->getComment()?><br>
<?php endforeach?>
查看控制器代码后:你需要在一个关联数组中传递$comments给view:
$data['comments'] = $comments;
$this->load->view('commentsList', $data);