cakephp-3.0 – 检查视图模板中是否存在对象或为空
发布时间:2020-12-13 22:15:02 所属栏目:PHP教程 来源:网络整理
导读:如果结果对象包含任何条目,如何在视图模板中检查? (已经有一个similar question,但这个略有不同) 以CakePHP 3 blog tutorial为例.他们展示了如何在一个页面上列出所有文章: // src/Controller/ArticlesController.phppublic function index() { $this-set(
如果结果对象包含任何条目,如何在视图模板中检查?
(已经有一个similar question,但这个略有不同) 以CakePHP 3 blog tutorial为例.他们展示了如何在一个页面上列出所有文章: // src/Controller/ArticlesController.php public function index() { $this->set('articles',$this->Articles->find('all')); } 和视图模板: <!-- File: src/Template/Articles/index.ctp --> <table> <tr> <th>Id</th> <th>Title</th> </tr> <?php foreach ($articles as $article): ?> <tr> <td><?= $article->id ?></td> <td> <?= $this->Html->link($article->title,['action' => 'view',$article->id]) ?> </td> </tr> <?php endforeach; ?> </table> 缺点:如果数据库中没有条目,则仍会呈现HTML表. 如何防止这种情况并显示一条简单的消息,例如“抱歉没有结果”的内容? 在CakePHP 2中我使用过 if ( !empty($articles['0']['id']) ) { // result table and foreach here } else { echo '<p>Sorry no results...</p>'; } 但是因为$articles现在是一个对象,所以它不再起作用了…是否有新的“简短方法”来检查结果对象?或者你是否通常先使用另一个foreach,比如 $there_are_results = false; foreach ($articles as $article) { if ( !empty($article->id) ) { $there_are_results = true; break; } } if ( $there_are_results == true ) { // result table and second foreach here } else { echo '<p>Sorry no results...</p>'; } 谢谢你的提示. 解决方法
您可以使用iterator_count()函数来了解集合中是否有结果:
if (iterator_count($articles)) { .... } 您还可以使用集合方法获取第一个元素: if (collection($articles)->first()) { } 编辑: 从CakePHP 3.0.5开始,检查查询或结果集空虚的最佳方法是: if (!$articles->isEmpty()) { ... } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |