我有一个表单,我想传递一个必须用来填充小部件的参数。
我在我的网址中传递参数:
url_for('myModule/new?parameter='.$myParam)
我试图在我的操作中获取参数并将其显示在我的模板中,但它不起作用。
行动:
$this->param = $request->getParameter('parameter');
模板:
echo param;
但是我无法以我的形式恢复它。
我该怎么做?
答案 0 :(得分:5)
如果初始化表单需要此参数,那么您可以这样做(请记住,您应该始终验证用户输入)
public function executeNew($request)
{
$formOptions = array('parameter' => $request->getParameter('parameter'));
$this->form = new MyForm(array(), $formOptions);
// Then within your form you access it with:
// $parameter = $this->options['parameter'];
// or even better:
// $parameter = $this->getOption('parameter');
... more code ...
}
如果参数是作为表单的一部分提交的,那么你应该像这样绑定它:
public function executeNew($request)
{
$this->form = new MyForm();
if ( $request->isMethod('post') ) {
$this->form->bind($request->getPostParameters());
}
... more code ...
}
有关如何创建和使用表单的更多信息,请参阅Symfony的Forms in Action。
修改:在代码示例中添加了$this->getOption('parameter')
。
答案 1 :(得分:0)
您必须在routing.yml中为此网址定义路线,并将参数添加到此路线。
例如:
mymoduel_new:
url: myModule/new/:paramter/
param: { module: myModule, action: new }
答案 2 :(得分:0)
您需要将其传递给表单构造函数,sfForm
和sf{Propel,Doctrine}Form
的构造函数都使用名为$options
的参数,然后使用它。将值存储在私有属性中,因此您可以使用表单的configure
方法。
答案 3 :(得分:0)
如果参数是对象的属性,则可以执行以下操作:
$object = new Class();
$object->setAttribute($request->getParameter('myParam'));
$form = new ClassForm($object);