我有一个像这样的控制器页面:
class UsersController extends AppController {
var $helpers = array ('Html','Form');
var $name = 'Users';
function index() {
$this->set('view_users', $this->User->find('all'));
}
}
然后我有另一个这样的控制器页面:
class PostsController extends AppController {
var $helpers = array ('Html','Form');
var $name = 'Posts';
function index() {
$this->set('edit_users', $this->Post->find('all'));
}
}
然后我有索引文件:
<?php foreach($view_users as $value): ?>
<p>id - <?php echo $value['User']['first']; ?></p>
<?php endforeach; ?>
<?php foreach($edit_users as $value): ?>
<p>id - <?php echo $value['Post']['first']; ?></p>
<?php endforeach; ?>
我得到的问题是:Notice (8): Undefined variable: view_users [APP\views\posts\index.ctp, line 6]
非常奇怪,因为edit_users
var起作用。
可能是什么问题? 感谢
答案 0 :(得分:3)
UsersController
和PostsController
是不同的控制器。他们使用不同的视图,即使他们都有index
动作,也会分别调用它们并使用不同的视图。
当您转到/users/index
时,它会调用设置index
变量的UsersController
的{{1}}操作。
当您转到$view_users
时,它会调用设置/posts/index
的{{1}} index
操作。
问题:您PostsController
$edit_users
操作未设置PostsController
的值,因此该变量未定义。假设您login
模型与$view_users
模型有关系,您应该可以将其添加到Post
User
操作中以解决您的问题:
PostsController
或者,您可以更改视图以使用index
检查变量是否先设置:
$this->set('view_users', $this->Post->User->find('all'));