4

私の見解ではこのエラーがあり、何が問題なのかを見つけることができません。

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コントローラからのアレイです。はループ変数であるため、 undefvarエラーが発生$cする理由がわかりません。

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);
}
4

5 に答える 5

1

<?サーバーはタグを許可していますか?一部の構成はそうではなく、通常のhtmlコメントに変換されます。試してみて<?php foreach($comments as $c): ?>、それで問題が解決するかどうかを確認してください。

編集:

そのエラーを修正したので、$commentsが何であるかがわかりません。これは、コントローラーで$commentsListとして定義したためです。

だからあなたは必要です<?php foreach($commentsList as $c): ?>

注:そもそもタグが問題だったため、タグを使用することはできません<?

2番目の編集:

CodeIgnitorのドキュメントを調べた$this->load->view('view_name', $data);ところ、データが値の配列であり、キーがビューで使用される変数名であり、値がそのキーの値である場所に含める必要があると書かれています。

だからこれを試してみてください:$this->load->view('view-name', array('comments' => $comments));

次に、ビューでに戻ります<?php foreach($comments as $c): ?>

詳細はこちらをご覧ください

于 2013-02-28T08:24:17.043 に答える
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;
        }
    }
?>

マヌーエラーがどのように返されるかを報告してください。

于 2013-02-28T09:18:59.493 に答える
0

コントローラコードを見た後:表示するには、連想配列で$commentsを渡す必要があります。

$data['comments'] = $comments; 
$this->load->view('commentsList', $data);
于 2013-02-28T08:19:46.327 に答える
0

これを試して :

<?php 
foreach($comments as $c){
    echo $c['comment'];
}
?>
于 2013-02-28T08:35:43.893 に答える
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?>
于 2013-02-28T10:28:02.080 に答える