我在控制器中使用Cake的find('all')方法来查询我拥有的表,并使用requestAction方法在视图中使用控制器函数(以便输出数据)。问题是find方法返回空数组(输出是'ArrayArrayArray')。该表名为'users'(根据Cake约定),所有三个文件的代码如下:
视图代码(test.ctp)
<?php
$users = $this->requestAction('/users/read');
foreach($users as $user) {
echo $user;
}
?>
控制器代码(users_controller.php)
<?php
class UsersController extends AppController {
var $name = 'Users';
function read(){
$users = $this->User->find('all');
if(isset($this->params['requested'])) {
return $users;
}
}
}
?>
模型代码(user.php)
<?php
class User extends AppModel {
var $name = 'User';
}
?>
我已经减少它并发现$ this-&gt; User-&gt; find('all')语句将$ users设置为NULL,因为该语句实际上没有返回任何值。我知道Cake正在寻找这张桌子,因为我之前使用的是表名('usres'而不是'users')。我无法弄清楚我错过了什么,或者我做错了什么。会爱一些帮助。 :)
答案 0 :(得分:1)
输出是'ArrayArrayArray'并不意味着它是空的
试
foreach($users as $user) {
debug($user);
}
答案 1 :(得分:0)
对我来说,这段代码毫无意义。
如果你想使用requestAction()以正确的方式使用它。它用于在视图中调用(和打印)应用程序的各个部分。
以下是如何实现正确的代码:
您的用户类:
class Users extends AppController {
function read(){
$this->set('users', $this->User->find('all'));
$this->layout = "ajax";
$this->render();
}
}
您的read.ctp:
<ul><?php
if(isset($users)){
foreach($users as $user) {
echo '<li>'.$user.'</li>';
}
}
?></ul>
现在在test.ctp中,您需要致电:
<?php echo $this->requestAction(
array(
'controller'=>'users',
'action'=>'read'
)
);?>
您将在测试操作中看到未排序列表中的结果。