doctrine で生成されたフォームを使用して更新できないエンティティを作成しました。アクションは次のとおりです。
public function executeEdit(sfWebRequest $request)
{
$this->forward404Unless($id = $request->getParameter('id'), "Required parameter 'id' must be present in request");
$this->forward404Unless($cart = Doctrine::getTable('ShoppingCart')->find($id), sprintf("No object could be retrieved by %s", $id));
$this->id = $id;
$this->form = new ShoppingCartForm($cart);
if($request->isMethod(sfRequest::POST)) {
$this->form->bind($request->getParameter('shopping_cart'));
if ($this->form->isValid())
{
$cart = $this->form->save();
$this->redirect(link_to('cart/show?id='.$cart->getId()));
}
}
}
フォームの isNew() メソッドは false を返しますが、sf_method は PUT に設定されています。sfRequest::PUT doctrine を使用すると、その ID を持つ新しいエンティティを追加しようとします。そのように振る舞うべきではないように思われるので、何が間違っているのでしょうか?