0

我对在 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'));

                }
4

1 回答 1

0

在您的视图 (ModulePart/add.ctp) 中输入:

$this->Form->create('ModulePart');
$this->Form->input('ModulePart.module_id');
$this->Form->end('Add');

自动魔术函数将为您完成工作,只需声明“模块”变量:使用列表函数获取的内容(设置为仅获取 'id' 和 'module_name' 字段)将填充表单的选择。

请注意 CakePHP 的约定:你的数据库字段应该命名为“module_name”,而不是“moduleName”。关于你的模型,你必须使用这个 sintax

$this->ModulePart->save($this->request->data);

代替

$this->Modulepart->save($this->request->data);

请记住:模型名称是 Singular 和 Camel Cased。控制器是复数和 Camel Cased。

另一件事 <= 听起来很史蒂夫风格,LOL => 是关于代码:

 $fields = array('id','moduleName');
 $modules = $this->Module->find('list',array('fields'=>$fields));
 $this->set(compact('modules'));

由于您的重定向,应该在 request->is('post') 检查之后移动:如果添加 ModulePart,则不需要获取该数据。毕竟有一个到 modules_home 的重定向......

快乐编码并阅读食谱;)

于 2013-09-20T16:14:41.660 回答