2012-03-02 51 views
0

因此,我的一個頁面由一個測驗表單組成,其中有多個選擇類型的問題,這些選項被指定爲單選按鈕。我一直在掃描Symfony文檔以瞭解如何訪問用戶輸入的表單字段值。事情是,這不是一個基於教條或推動的形式,我也不需要將這些值存儲在數據庫中,因此執行$ form-> save()對我來說毫無意義。但是,一旦用戶提交,我確實需要在我的後端訪問我的表單的特定值。在我的Symfony中執行表單值executeAction後端

我遇到的大部分Symfony文檔並不一定解釋如何做到這一點。我會認爲這將是: $ request-> getParameter('radio_choices_id selected value')。

感謝所有誰看了這樣的乾杯向誰作出迴應的人:)

帕裏賈特

回答

1

嗯,這是很簡單的,如果我理解你的問題的權利) 對於窗口小部件:

$this->widgetSchema['name'] = new sfWidgetFormChoice(array('choices' => array('ch_1', 'ch_2'))); 

好了,在行動:

$this->form = new FaqContactForm(); 

     if ($request->isMethod('post')) { 
      $this->form->bind($request->getParameter($this->form->getName())); 

      if ($this->form->isValid()) { 

       $your_val=$this->form->getValue('name'); 

       //or 

       $your_val=$this->form['name']->getValue()); 
      } 
     } 

在後端在protected function processForm(sfWebRequest $request, sfForm $form) 你有

$form->bind($request->getParameter($form->getName()), $request->getFiles($form->getName())); 
    if ($form->isValid()) 
    { 
     $notice = $form->getObject()->isNew() ? 'The item was created successfully.' : 'The item was updated successfully.'; 

     try { 
     $product = $form->save(); 
     } catch (Doctrine_Validator_Exception $e) { 

     $errorStack = $form->getObject()->getErrorStack(); 

     $message = get_class($form->getObject()) . ' has ' . count($errorStack) . " field" . (count($errorStack) > 1 ? 's' : null) . " with validation errors: "; 
     foreach ($errorStack as $field => $errors) { 
      $message .= "$field (" . implode(", ", $errors) . "), "; 
     } 
     $message = trim($message, ', '); 

     $this->getUser()->setFlash('error', $message); 
     return sfView::SUCCESS; 
     } 

$product = $form->save();之前嘗試

$your_val=$form->getValue('name'); 
//or 
$your_val=$form['name']->getValue());