CakePHP3迭代模型不起作用


CakePHP3 iterating model not working

我刚刚第一次安装cakehp3。我认为这是一个好主意,为我的新项目转移到最新版本的框架。现在我正在为新的ORM撞墙。我已经广泛阅读了这些文档,并掌握了它应该如何工作。在我的一生中,我无法从数据库中获得可以迭代的结果。我可以获取返回的结果,手动访问索引并查找数据,但如果我尝试迭代,我总是会收到关于未定义变量的错误。

控制器:

$this->loadModel('Users');
$this->set('users', $this->paginate($this->Users));
$this->set('_serialize', ['users']);

视图:

<? foreach($users as $user) { ?>
    <?= $user->name ?>
<? } ?>

我烘焙了模型、视图和控制器。我现在正试图开始从数据库中提取数据并对其进行迭代。我已经尝试了无数种对结果使用collections和toArray()的变体,但文档似乎描述的应该有效的东西实际上都不起作用。

获得一组结果并将它们放到可以在控制器或视图中迭代的点上,最可靠、最正确的方法是什么?

视图中显示的错误:

Notice (8): Undefined variable: user [APP/Template/Pages/display.ctp, line 23]

完整日志条目:

2015-12-15 22:48:57 Notice: Notice (8): Undefined variable: user in [/Library/Server/Web/Data/Sites/Default/chronoticker/chronoticker/src/Template/Pages/display.ctp, line 23]
Trace:
Cake'Error'BaseErrorHandler::handleError() - CORE/src/Error/BaseErrorHandler.php, line 140
include - APP/Template/Pages/display.ctp, line 23
Cake'View'View::_evaluate() - CORE/src/View/View.php, line 971
Cake'View'View::_render() - CORE/src/View/View.php, line 931
Cake'View'View::render() - CORE/src/View/View.php, line 579
Cake'Controller'Controller::render() - CORE/src/Controller/Controller.php, line 611
Cake'Routing'Dispatcher::_invoke() - CORE/src/Routing/Dispatcher.php, line 120
Cake'Routing'Dispatcher::dispatch() - CORE/src/Routing/Dispatcher.php, line 87
[main] - ROOT/webroot/index.php, line 37

在做一些额外的测试时,我发现情况确实如此。该视图似乎拒绝执行任何迭代操作。

<pre>
<?= print_r($user_list[3]) ?> //Will work and return an array of data
</pre>
<? foreach($user_list as $aUser) { ?>
    <?= $aUser['name'] ?> //Does not work. Kicks error about undefined variable
<? } ?>

<? for($x = 0; $x < count($user_list); $x++) { ?>
    <?= $user_list[$x]['name'] ?> //Does not work. gives undefined variable error for $x
<? } ?>

考虑到它是未定义的$user变量,我怀疑循环没有被执行,很可能是因为您的PHP安装禁用了短打开标记

查看生成的页面源代码,您可能会找到PHP代码。简单的修复,不要使用短的打开标签,而是使用<?php