CakePHP 2.0 $ this-> Form-> input()

时间:2012-07-27 08:57:46

标签: cakephp view

这是我的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');

?>

表名:组 表字段: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>

为什么它被隐藏了?

3 个答案:

答案 0 :(得分:4)

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

如果您要强制显示ID字段,请将type设置为text

echo $this->Form->input('group_id', array('type' => 'text', 'label' => 'ID'));

答案 1 :(得分:4)

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

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

echo $this->Form->input('group_id', array('label' => 'ID', 'type' => 'text'));

答案 2 :(得分:1)

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

您的群组表将group_id作为主键 从数据库中将其设置为auto_increment,无需在添加表单上手动输入该ID,它将自动保存。表单字段根据模型结构生成。