2

这是我的 add.tcp ...

<?php

echo $this->Form->create('Group');
echo $this->Form->input('group_id', array('label' => 'ID'));
echo $this->Form->input('group_desc', array('label' => 'Group Description'));
echo $this->Form->end('Save');

?>

表名:groups 表字段:group_id、group_desc PK:group_id

这是我的控制器...

class GroupsController extends AppController {
  public $helper = array('Html', 'Form', 'Session');
  public $components = array('Session');

  public function add() {
    if ($this->request->is('post')) {
      if ($this->Group->save($this->request->data)) {
        $this->session.setFlash('');
        $this->redirect(array('action' => 'index'));
      }
    }
  }  
}

当我在浏览器上显示此视图时,字段 group_id 没有任何内容,但 group_desc 有,看起来像这样的 HTML 源...

<form action="/cakephp/index.php/groups/add" id="GroupAddForm" method="post" accept-charset="utf-8" name="GroupAddForm">
    <div style="display:none;">
        <input type="hidden" name="_method" value="POST">
    </div><input type="hidden" name="data[Group][group_id]" id="GroupGroupId">
    <div class="input text">
        <label for="GroupGroupDesc">Group Description</label><input name="data[Group][group_desc]" maxlength="15" type="text" id="GroupGroupDesc">
    </div>
    <div class="submit">
        <input type="submit" value="บันทึก">
    </div>
</form>

为什么被隐藏了?

4

3 回答 3

4

CakePHP 自动确定您不希望用户手动输入 ID,因此会为您隐藏它。

如果您想强制显示 ID 字段,请将其设置typetext

echo $this->Form->input('group_id', array('type' => 'text', 'label' => 'ID'));
于 2012-07-27T09:09:19.233 回答
4

因为默认情况下主键输入是隐藏的。CakePHP 在添加为自动增量 INT 或 uuid CHAR 时为您创建主键 不建议手动创建主键。

您可以将隐藏类型更改为文本:

echo $this->Form->input('group_id', array('label' => 'ID', 'type' => 'text'));
于 2012-07-27T09:10:52.930 回答
1

根据您的数据库结构,我想提出一些建议:

您的组表以 group_id 作为主键,使其成为数据库中的 auto_increment 并且无需手动将该 id 放在添加表单上,它将自动保存。表单字段根据模型结构生成。

于 2012-07-27T09:37:25.747 回答