Значения формы доступа в моем бэкэнде Symfony executeAction - PullRequest
0 голосов
/ 02 марта 2012

Итак, одна из моих страниц состоит из формы викторины, в которой есть несколько вопросов типа множественного выбора, варианты выбора указаны в виде переключателей.Я сканировал документацию Symfony, чтобы узнать, как получить доступ к значениям полей формы, введенным пользователем.Дело в том, что это не доктрина или форма, основанная на продвижении, и я также не требую сохранения значений в базе данных, поэтому выполнение $ form-> save () не имеет для меня никакого смысла.Но мне требуется доступ к определенным значениям моей формы в моем бэкэнде, когда пользователь нажимает кнопку «Отправить».

Большая часть документации Symfony, с которой я столкнулся, не обязательно объясняет, как это можно сделать.Я бы предположил, что это будет что-то с эффектом: $ request-> getParameter ('radio_choices_id selected value').

Спасибо всем, кто прочитал это и поздравляет тех, кто на него ответил:)

Parijat

1 Ответ

1 голос
/ 03 марта 2012

Хм, это очень просто, если я правильно понимаю ваш вопрос) Для виджета:

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