编辑CakePHP 3

时间:2016-01-06 15:54:34

标签: mysql cakephp primary-key cakephp-3.0

我想在表 Watch 中编辑名为WTEL的CakePHP 3中的主键。

主键字段默认隐藏在视图中,因此我使用此代码行使其显示在文件src/Template/Watch/edit.ctp中(由scaffold生成):

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

显示字段WTEL但是当我修改WTEL输入并单击提交按钮时,WTEL值不会被修改。

但是,此代码行适用于添加页面,用于添加WTEL值。

1 个答案:

答案 0 :(得分:0)

为了澄清,您希望能够在edit.ctp视图中更新现有行的主键(使用Watch Controller中的默认烘焙编辑功能)?

最简单的方法是制作一份“复制品”。功能,这些内容:

public function copy($id = null){

    //get the old Watch to be copied
    $oldWatch = $this->Watch->get($id);

    $watchTable = TableRegistry::get('Watchs');
    $watch= $watchsTable->newEntity();

    //Copy all existing values into new row, e.g.
    $watch->description = $oldwatch->description;

    if ($watchsTable->save($watch)) {
        // The $watch entity contains the id now, so you are returned 
           to the edit page for the newly created 'watch'
        $id = $watch->id;
    }

    return $this->redirect(['action' => 'edit', $id]);
}

如果您想制作自定义主键,可以尝试添加:

$watch->id = $this->data['Watch']['id'];

复制所有现有值'部分评论如上。

这会回答你的问题吗?