【发布时间】:2015-12-15 17:33:53
【问题描述】:
我是第一次安装 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
<? } ?>
【问题讨论】:
-
每当收到错误时,请发布 complete、exact 错误消息,并附上相应的堆栈跟踪(最好来自日志,它的格式是适当地)。此外,CakePHP 错误页面/通知会输出有用的上下文信息(如涉及的变量、参数等)。
-
我已经编辑并添加了额外的信息。
标签: php orm cakephp-3.0