我想在表 Watch 中编辑名为WTEL
的CakePHP 3中的主键。
主键字段默认隐藏在视图中,因此我使用此代码行使其显示在文件src/Template/Watch/edit.ctp
中(由scaffold生成):
echo $this->Form->input('WTEL', array('type' => 'text'));
显示字段WTEL
但是当我修改WTEL
输入并单击提交按钮时,WTEL
值不会被修改。
但是,此代码行适用于添加页面,用于添加WTEL
值。
答案 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'];
复制所有现有值'部分评论如上。
这会回答你的问题吗?