SQL:
CREATE TABLE IF NOT EXISTS `photoalbums` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`title` varchar(200) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=3 ;
型号:
<?php defined('SYSPATH') OR die('No Direct Script Access');
Class Model_PhotoAlbum extends ORM {}
?>
控制者的行动:
public function action_edit()
{
$id = $this->request->param('id');
$album = ORM::factory('photoalbum', $id);
$this->template->album = $album;
if ($this->request->post())
{
$album->title = $this->request->post('title');
$album->save();
$this->request->redirect('/');
}
}
每当我编辑某个相册时,ORM只会在DB中加入新实例而不是更新它。我google了很好,但我找不到解决方案。 此外,我试图使用Jelly ORM,它也导致了这个问题。
更新
TWIG:
<!DOCTYPE HTML>
<html>
<head>
<title>Фотоальбомы</title>
<link rel="stylesheet" type="text/css" href="/media/css/main.css" />/>
<script src="media/js/jquery-1.7.1.min.js" />
<script src="media/js/main.js" />
</head>
<body>
<h1>Новый фотоальбом</h1>
<form action="/photoalbum/edit/" method="POST">
<p>
<label for="title">Название:</label><input type="text" id="title" name="title" value="{{ album.title }}" />
</p>
<p><input type="submit" value="Сохранить" /></p>
</form>
</body>
</html>
答案 0 :(得分:1)
问题似乎是您没有将ID传递给表单中的控制器。
您的表单操作应该是
action="/photoalbum/edit/ALBUM_ID"
或类似的东西。
您正在使用
请求相册ID$id = $this->request->param('id');
$album = ORM::factory('photoalbum', $id);
但您在表单操作中没有参数“id”。
<form action="/photoalbum/edit/" method="POST">
或者,您可以将ID作为隐藏字段发送到您的表单中,但是您必须使用
来获取它$id = $this->request->post('id');