所以我的一个页面包含一个测验表单,它有多个类型多项选择的问题,选项被指定为单选按钮。我一直在扫描Symfony文档,以了解如何访问用户输入的表单字段值。事实上,这不是一个基于学说或推进的形式,我也不需要将值存储在数据库中,因此执行$ form-> save()对我来说没什么意义。但是,一旦用户点击提交,我确实需要在我的后端访问我的表单的特定值。
我遇到的大多数Symfony文档并不一定解释如何做到这一点。我认为它会产生以下影响: $ request-> getParameter('radio_choices_id selected value')。
感谢所有读过这篇文章的人,并感谢那些回复此事的人:)
帕里贾特
答案 0 :(得分: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());