2014-06-27 122 views
2

我一直在關注this tutorial以創建Symfony 2.5的註冊表單。Symfony表單提交不起作用

我所做的唯一區別是我的User類中的用戶名的附加字段,並將其呈現在UserType表單中。

將表單提交給account_create -route(最終使用帳戶控制器中的create操作)時,它將無法正確處理表單。該頁面顯示空白,甚至沒有分析器顯示了。

此外,似乎腳本打破了我的Apache(我通過XAMPP在Windows上本地運行此操作),因爲我在提交表單後嘗試執行的所有操作都會導致無限加載。這意味着無論我的服務器上哪個頁面嘗試訪問下一個(即使它只是分析器),我都不會。它只是永遠加載(我一直等待10分鐘一次)。那時只有Apache重啓了。

這是我的賬戶控制器

// 'account_create' route 
// TestBundle:Account:create 
public function createAction(Request $request) 
{ 
    $em = $this->getDoctrine()->getManager(); 
    echo "Doctrine managed. "; 

    $form = $this->createForm(new RegistrationType(), new Registration()); 
    echo "Form created. "; 

    $form->handleRequest($request); 
    echo "Request handled. "; 

    if ($form->isValid()) { 
     $registration = $form->getData(); 
     echo "Form data received. "; 

     $em->persist($registration->getUser()); 
     echo "User persisted. "; 
     $em->flush(); 
     echo "Toilet flushed. "; 

     return $this->redirect($this->generateUrl('admin_page')); 
    } 

    return $this->render(
     'TestBundle:Account:register.html.twig', 
     array('form' => $form->createView()) 
    ); 
} 

只輸出Doctrine managed. Form created.內createAction,那麼顯然它調用handleRequest($request)方法時崩潰。

這是什麼,這是非常可怕的錯誤?

告訴我,如果你需要任何其他腳本的代碼!

+0

您是否在實體類中添加了getUsername()和setUsername()? – mboullouz

+0

@Timmz:我做到了。 User類具有getter和setter,用於表單中正在處理的每個值。 – Padarom

+0

嘗試:\ Doctrine \ Common \ Util \ Debug :: dump($ request);看看這個對象是什麼.. – mboullouz

回答

0

我知道這是不是答案,但無論如何,它不是配件,評論和邁出的重要一步調試在try塊這個

放手柄請求和回聲異常

try { 
     $form->handleRequest($request); 
    } catch (\Exception $e) { 
     echo "failed : ".$e->getMessage(); 
    } 

拋出什麼異常?

+0

由於某些原因,如果我使用try-catch-block,它不會引發異常。但Symfony不應該自行捕獲異常並在'dev'-environment中爲我追蹤它們嗎? – Padarom

+0

我也嘗試通過'set_error_handler()'綁定一個自定義錯誤處理程序,以防萬一它是一個錯誤而不是一個異常。該腳本仍然停止執行,而不是捕捉任何東西。 – Padarom

+0

是的,這很奇怪,你在使用RegistrationType和Registration類時是否使用Document?嘗試將它們設置爲變量之前像$ type = new RegistrationType()..也許這是我做的故障點 –