2013-03-22 70 views
0

從這個頁面:Symfony的1.4形式未找到

main_dev.php/player/new 

來(當我點擊提交):

main_dev.php/player/edit/player_id/(no id) 

,如果我把一個ID在這裏顯示的罰款。

當我點擊提交按鈕(不知它保存),但顯示的:

404 |未找到| sfError404Exception

Object Player does not exist()。

這是我的基本形式:

$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(), 
)); 

IM懷疑這裏的問題是不顯示的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()); 
    } 
    } 

和ofcourse新頁面控制器:

public function executeNew(sfWebRequest $request) 
{ 
    $this->form = new PlayerForm(); 
} 
+1

你能否顯示保存玩家信息的代碼 – 2013-03-22 08:07:40

+0

@ Rohit Subedi當你點擊提交時實際保存到數據庫,但問題是顯示保存的信息; btw person_id是主鍵,並且由數據庫自動遞增,所以用戶不需要填充它們(我將它設置爲隱藏),所以我認爲它也不會存在於post方法中。 – Viscocent 2013-03-25 02:29:47

回答

0

如果POST請求保存一個新的播放器對象(在數據庫中),這是不是你BasePlayerForm.class,也沒有提交網址。

如果你的路由工作時手動輸入,而不是當在動作類中調用,那麼你的routing.yml可能不是問題。

如果您還沒有覆蓋BasePlayerForm.class.php的configure()(在PlayerForm.class.php或其他任何地方),那麼它不在您的lib/form/classes中。

這個答案是無用的(對不起),或者你實際上並不意味着操作將對象「保存」到數據庫 - 在這種情況下,請檢查newSuccess模板中的提交url /請求;也驗證了您的路由:

你newSuccess.php表單標籤的行動應該張貼到main_dev.php /播放:[並傳遞HTML渲染爲<input type="hidden" name="player[player_id]" id="player_id" />的ID] <form method="post" action="/main_dev.php/player"> 最後,在URL中編輯路由會通常匹配player/:player_id/edit - 除了「player_id」之外,檢查模式/數據庫中是否實際上有自動創建的「id」列,這可能是真正導致此問題的原因。

+0

好吧繼承人我的桌子: – Viscocent 2013-03-25 02:33:01

+0

沒問題player_id =自動增量/主鍵(這不會被用戶填滿,這意味着當用戶按下提交時它將是空的)。 – Viscocent 2013-03-25 02:51:16

+0

@ user2064173聽起來就像你在同一個表中有兩個pk(「person_id是主鍵...」和「player_id =自動增量/主鍵」)。這可能是一個問題。隱藏的pk字段不是問題,並在POST中傳遞並由db處理。沒有在您的代碼中的任何地方看到person_id。 – 2013-03-25 16:46:59