我试图在Cakephp v2.6.1的下拉列表中填充值。 正在检索这些值,但是表单助手没有按预期创建下拉列表框:我在表单上显示的所有内容都是“提交”按钮 - ID字段作为隐藏字段发送到网页。有人可以指出我出错的地方吗?
课程成员控制
<?php
App::uses('AppController', 'Controller');
class CoursemembershipsController extends AppController {
public $components = array('Paginator', 'Session');
...
public function add() {
if ($this->request->is('post')) {
$this->Coursemembership->create();
if ($this->Coursemembership->save($this->request->data)) {
$this->Session->setFlash(__('The coursemembership has been saved.'));
if ($this->Coursemembership->saveAssociated($this->request->data)) {
return $this->redirect(array('action' => 'index'));
} else {
$this->Session->setFlash(__('The coursemembership could not be saved. Please, try again.'));
}
}
}
$students = $this->Coursemembership->Student->find('list');
$courses = $this->Coursemembership->Course->find('list');
$this->set(compact('students', 'courses'));
}
添加视图
<div class="coursememberships form">
<?php echo $this->Form->create('Coursemembership'); ?>
<?php echo $this->Form->input('Student.id'); ?>
<?php echo $this->Form->input('Course.id'); ?>
<?php echo $this->Form->end(__('Submit')); ?>
</div>
变量(来自调试加载项)
View Variables
students(array)
1Cromwell
2Lionheart
3Knight
7four
8five
9six
10seven
11eight
courses(array)
1Applied Speliology
2Aggravated aggrandisement
3Crossword Puzzles 101
5Aggravated aggrandisement
6Applied Speliology
答案 0 :(得分:0)
您没有正确设置输入的字段名称。 id
字段是按惯例的主键,将作为隐藏字段添加(通常用于编辑,因此您的模型知道要更改的ID)。
如果您遵循数据库设计惯例,则应添加在Coursemembership数据源中设置的字段(可能是名为coursememberships
的数据库表)。这应该显示您需要的字段并保存正确的数据:
echo $this->Form->create('Coursemembership');
echo $this->Form->input('Coursemembership.student_id');
echo $this->Form->input('Coursemembership.course_id');
echo $this->Form->end(__('Submit'));
您要保存的所有内容都应转到Coursemembership
模型。如果您确实想要在应用程序中添加新的学生或课程,则只需要向Student
或Course
模型保存任何内容。要将学生的成员资格分配给课程,上述代码应该可以解决问题。