我是cakephp
的新人,实际上我想要显示属于一个主题类别的所有主题列表。我制作了一个主题模型,代码如下:
<?php
class Subject extends AppModel
{
var $name='Subject';
var $belongsTo = 'Subjectscat';
}
?>
和主题类别模型是:
<?php
class Subjectscat extends AppModel
{
var $name='Subjectscat';
var $hasMany=array('Subject');
}
?>
<?php
class SubjectscatsController extends AppController
{
var $name='Subjectscats';
var $helpers = array('Html', 'Javascript', 'Ajax');
var $components = array('Auth');
var $uses=array('Subject', 'User','Subjectscat');
function index()
{
$this->layout = 'internal';
$session_id=$this->Session->read('User.id');
$username = $this->User->find('all', array('conditions' => array('User.id' =>$session_id)));
$this->set('session_id',$username);
$this->Subjectscat->recursive =1;
$cat = $this->Subjectscat->find('all');
$this->set('subjectcategory',$cat);
}
function isAuthorized() {
return true;
}
}
?>
和视图的位置:
<table><tr><td colspan="3">View Feedback</tr>
<?php debug($subjectcategory) ?> <?php echo $html->link('Add Feedback', '/feedbacks/add', array('class'=>'button')); ?>
<?php print_r($subjectcategory); ?>
<?php foreach($subjectcategory as $subject_cat)
{
?>
<tr>
<td><?php echo $subject_cat['Subjectscat']['cat_name'];?></td>
<?php print_r($subject_cat['Subjectscat']['Subjects']); ?>
</tr>
<?php }
?>
</tr>
</table>
并且它给出了这个错误:
注意(8):未定义的索引:主题[APP \ views \ subjectscats \ index.ctp,第10行]
-- Table structure for table `subjects`
--
CREATE TABLE IF NOT EXISTS `subjects` (
`id` bigint(4) NOT NULL auto_increment,
`subjectscats_id` bigint(4) NOT NULL,
`name` varchar(25) NOT NULL,
PRIMARY KEY (`id`),
KEY `subjectscats_id` (`subjectscats_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;
--
-- Dumping data for table `subjects`
--
INSERT INTO `subjects` (`id`, `subjectscats_id`, `name`) VALUES
(1, 1, 'English'),
(2, 1, 'Hindi');
--
-- Constraints for dumped tables
--
--
-- Constraints for table `subjects`
--
ALTER TABLE `subjects`
ADD CONSTRAINT `subjects_ibfk_1` FOREIGN KEY (`subjectscats_id`) REFERENCES `subjectscats` (`id`) ON UPDATE CASCADE;
答案 0 :(得分:3)
我有时希望开发人员更加关注细节。
您收到的通知来自这条线:
print_r($subject_cat['Subjectscat']['Subjects'])
如果用这一行替换该行,你会明白为什么:
debug($subject_cat)
“主题”键在你的数组中不存在,所有模型都是单数,还记得吗?你需要做的是一个foreach循环:
foreach ($subject_cat['Subject'] as $subject)
{
// output stuff you need from $subject
}
记住debug() function,这是一个很棒的工具。调试你的东西的另一种方法是优秀的debug_kit plugin;非常容易设置,非常非常有用。