我在视图中出现此错误,无法找出问题所在。
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 error 。
UPD:这是我的控制器代码
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);
}
答案 0 :(得分:1)
您的服务器是否允许<?
个标记。有些配置没有,他们会把它们变成常规的html注释。试试<?php foreach($comments as $c): ?>
,看看是否可以解决问题。
编辑:
现在我们修复了这个错误,它不知道$ comments是什么。那是因为在你的控制器中你将它定义为$ commentsList:
所以你需要<?php foreach($commentsList as $c): ?>
注意:您仍然无法使用<?
标记,因为这些标记首先是问题。
第二次编辑:
我查了CodeIgnitor的文档,它说你必须包含在$this->load->view('view_name', $data);
中,其中data是一个值数组,其中键是视图中使用的变量名,值是值键。
所以试试这个:$this->load->view('view-name', array('comments' => $comments));
然后在视图中返回<?php foreach($comments as $c): ?>
有关详细信息,请参阅this
答案 1 :(得分:0)
查看控制器代码后: 您需要在关联数组中传递$注释才能查看:
$data['comments'] = $comments;
$this->load->view('commentsList', $data);
答案 2 :(得分:0)
试试这个:
<?php
foreach($comments as $c){
echo $c['comment'];
}
?>
答案 3 :(得分:0)
你遇到了奇怪的错误。为什么在foreach循环中没有HTML时使用速记PHP标记?或者生产代码是否不同?
您可以使用以下代码(解决方法)使代码正常工作:
<?php
foreach($comments as $key=>$c) {
if(isset($c) && isset($c['comment'])) {
echo $c['comment'];
} else {
echo 'Error at index ' . $key;
}
}
?>
请报告您返回的manu错误。
答案 4 :(得分:0)
大家,谢谢。我这样解决了问题。我把控制器改成了这个。传递控制器对象数组似乎比数组数组更好。
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?>