CakePHP3迭代模型无法正常工作

时间:2015-12-15 17:33:53

标签: php orm cakephp-3.0

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

控制器:

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

查看:

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

我烘焙了模型,视图和控制器。我现在正试图从数据库中提取数据并进行迭代。我已经尝试了无数的使用集合和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
<? } ?>

1 个答案:

答案 0 :(得分:2)

鉴于它是未定义的$user变量,我怀疑循环没有被执行,很可能是因为您的PHP安装已禁用short open tags

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