我对cakephp中使用下拉列表框的概念有点新。如果用户选择了项目并提交了某些内容。我可以将该项目与所选项目相关联。 在我的下面的代码中:模块部分应该在正确的模块中提交(添加)(从列表框中选择)。有人可以指出语法。
控制器代码。
$fields = array('id','moduleName');
$modules = $this->Module->find('list',array('fields'=>$fields));
$this->set(compact('modules'));
if($this->request->is('post'))
{
$mDetails = $this->Session->read('mDetails');
$this->Modulepart->set('id', $mDetails['Modulepart']['id']);
if($this->Modulepart->save($this->request->data)){
$this->Session->setFlash('Your new Module part has been successfully added!');
$this->redirect(array('controller' => 'modules','action'=>'modules_home'));
}
答案 0 :(得分:0)
在您的视图(ModulePart / add.ctp)中输入以下内容:
$this->Form->create('ModulePart');
$this->Form->input('ModulePart.module_id');
$this->Form->end('Add');
自动魔术功能将为你工作,只是声明“模块”变量:使用list函数获取的内容(设置为只获取'id'和'module_name'字段)将填充表单的选择。
请注意CakePHP约定:您的数据库字段应命名为'module_name',而不是'moduleName'。关于你的模型,你必须使用这个sintax
$this->ModulePart->save($this->request->data);
而不是
$this->Modulepart->save($this->request->data);
请记住:型号名称是Singular和Camel Cased。控制器是Plurals和Camel Cased。
还有一件事< =声音太多史蒂夫式,LOL =>是关于代码:
$fields = array('id','moduleName');
$modules = $this->Module->find('list',array('fields'=>$fields));
$this->set(compact('modules'));
由于您的重定向,应该在请求之后移动 - >是('post')检查:如果添加ModulePart,则无需获取该数据。毕竟还有一个重定向到modules_home ......
快乐编码并阅读CookBook;)