在CakePHP中编辑时,URL中的`id`字段出现问题

时间:2011-07-22 18:24:38

标签: php cakephp hidden-field

我在常规id结构中遇到http://localhost/bekzcart/admin/users/edit/6字段的问题。

我有6个用户字段,所有字段都通过模型验证为“非空”。编辑一个用户时我放了一个隐藏的字段。

在提交表单时,它自然会给我错误(来自模型)说“非空”。没有在该领域输入任何内容,我再次点击提交,现在我面临问题。

这次发生的事情是,网址中的'id'字段现已消失,http://localhost/bekzcart/admin/users/edit)并且数据库中有一个新条目(理想情况下它应该更新)。

可能是什么错误?

我的用户控制器:

class UsersController extends AppController {
    var $name = 'Users';

    function admin_edit($id) {
        $this->User->id = $id;
        $userLevels = $this->User->Level->find('list', array('fields' => array('LEVEL_ID', 'lEVEL_NAME')));
        $this->set('levels', $userLevels);

        if (empty($this->data)) {
            $this->data = $this->User->read();
        } else {
            $this->User->set($this->data);

            if ($this->User->validates(array('fieldList' => array('USER_LOGIN', 'USER_NAME', 'USER_EMAIL', 'USER_ADDRESS', 'USER_PHONE')))) { 
                $this->data['User']['USER_MODIFIED'] = DboSource::expression('NOW()');

                if ($this->User->save($this->data)) { 
                    $this->Session->setFlash(__('Edit User Success.', true));
                } else {
                    $this->Session->setFlash(__('Something wrong with the query', true));    
                }
            }    
        }                
    }
}

用户模型:

class User extends AppModel {
    var $name = 'User';
    var $primaryKey = 'USER_ID';

    // Validation in here
    // Association in here
}

我的相关观点:admin_edit.ctp

$this->Form->input('id', array('type' => 'hidden')) // The Hidden Id Not Work

非常感谢提前,

regrad

布莱恩......

2 个答案:

答案 0 :(得分:0)

你正在使用什么版本的蛋糕?更新到最新版本,echo $this->Form->input('id');将自动隐藏。

并发布生成表单的完整代码,输出表单应该是这样的:

<form id="AdminUserEditForm" accept-charset="utf-8" action="/admin/users/edit/1" method="post">

还有一个建议:将“已创建”和“已修改”字段添加到您的用户表(键入日期时间)。 Cake将为您跟踪这些字段。

答案 1 :(得分:0)

字段id必须替换为相关表使用的主键,在本例中为USER_ID

$this->Form->input('USER_ID', array('type' => 'hidden'))