このページから:
main_dev.php/player/new
to(送信をクリックしたとき):
main_dev.php/player/edit/player_id/(no id)
ここにIDを入力すると、正常に表示されます。
送信ボタンをクリックすると(どういうわけか保存されます)、次のように表示されます。
404 | 見つかりません| sfError404Exception
Object Playerは存在しません()。
これは私のベースフォームです:
$this->setWidgets(array(
'player_id' => new sfWidgetFormInputHidden(), //primary key auto increment()
'player_name' => new sfWidgetFormInputText(),
'player_gold' => new sfWidgetFormInputText(),
'chara_id' => new sfWidgetFormInputText(),
'open_social_id' => new sfWidgetFormInputText(),
));
ここでの問題は、player_idが表示されず、自動インクリメントであることに疑いがあります。つまり、フォームを送信すると、player_idは空白のままになり、symfonyはレコードを表示するための参照用のIDを取得する場所を見つけることができないため、404になりますが、これに回避策はありますか?
そして私のaction.classはデフォルト(私がそれを生成したときのインスタンス)から残されているので、私は問題ではないと思います
フォームを保存するためのコードは次のとおりです。
protected function processForm(sfWebRequest $request, sfForm $form)
{
$form->bind($request->getParameter($form->getName()), $request->getFiles($form->getName()));
if ($form->isValid())
{
$Player = $form->save();
$this->redirect('player/edit?player_id='.$Player->getPlayerId());
}
}
そしてもちろん、新しいページコントローラの場合:
public function executeNew(sfWebRequest $request)
{
$this->form = new PlayerForm();
}