###前提・実現したいこと
(開発環境)
ZendFramwork1.12.20
Apache2.4.16
PHP5.6.12
Windows7(32bit)
indexAction() で、
echo $view -> render('index.phtml');
のタイミングだけview側に変数をセットしたいが、
$view = new Zend_View();
の際にview側の変数にnullがセットされしまうの現象を回避したい。
###発生している問題・エラーメッセージ
↓ データが無い場合の判定と、ある場合の判定結果の2つが表示されてしまう。 ーーーーーーーーーーーーーーーーーーーー データがありません。(無い場合) 名前 電話番号 住所(ある場合) 山田 090-0000-0000 東京都 菊池 080-0000-0000 山形県 木下 070-0000-0000 富山県 ーー ↓ これだけ表示させたい ーーーーー 名前 電話番号 住所 山田 090-0000-0000 東京都 菊池 080-0000-0000 山形県 木下 070-0000-0000 富山県
###該当のソースコード
■IndexControllre
public function indexAction()
{
//データのセット
$data = array(
array(
'name' => '山田',
'tel' => '090-0000-0000',
'address' => '東京都'
),
array(
'name' => '菊池',
'tel' => '080-0000-0000',
'address' => '山形県'
),
array(
'name' => '木下',
'tel' => '070-0000-0000',
'address' => '富山県'
)
);
//インスタンスを生成し、index.phtmlにレンダーする。
$view = new Zend_View();
$view -> setScriptPath('../application/views/scripts/index');
$view -> person = $data;
echo $view -> render('index.phtml');
}
■index.phtml
<!DOCTYPE html> <html> <head> <title>住所録</title> </head> <body> <?php //データがあればforeachで取り出し、なければ「データがありません。」と表示する。 if($this -> person): ?> <table> <tr> <th>名前</th> <th>電話番号</th> <th>住所</th> </tr> <?php foreach ($this -> person as $value) : ?> <tr> <td><?php echo $this -> escape($value['name']); ?></td> <td><?php echo $this -> escape($value['tel']); ?></td> <td><?php echo $this -> escape($value['address']); ?></td> </tr> <?php endforeach; ?> </table><?php else: ?> <p>データがありません。</p> <?php endif; ?>
<?php //ダンプしてみる var_dump($this -> person); ?>
</body> </html>###試したこと
1.var_dumpすると、以下のようにnullがセットされていることがわかった。
データがありません。
NULL
名前 電話番号 住所
山田 090-0000-0000 東京都
菊池 080-0000-0000 山形県
木下 070-0000-0000 富山県
array(3) { [0]=> array(3) { ["name"]=> string(6) "山田" ["tel"]=> string(13) "090-0000-0000" ["address"]=> string(9) "東京都" } [1]=> array(3) { ["name"]=> string(6) "菊池" ["tel"]=> string(13) "080-0000-0000" ["address"]=> string(9) "山形県" } [2]=> array(3) { ["name"]=> string(6) "木下" ["tel"]=> string(13) "070-0000-0000" ["address"]=> string(9) "富山県" } }
2.echo $view -> render('index.phtml'); をコメントアウトすると、「データがありません。」のみが表示される。
なので、「$view = new Zend_View();」時にindex.phtmlの変数personにnullがセットされてしまっているようです。
###補足情報(言語/FW/ツール等のバージョンなど)
より詳細な情報
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。