2011-05-28 50 views
0

我有一个带有2个输入字段的电子邮件和密码(隐藏)的表单。我正在尝试生成如下的随机值,但未能在提交后绑定密码(隐藏)值。Symfony在提交后设置隐藏值

$password = substr(md5(rand(100000, 999999)), 0, 6); 

$this->form->bind($request->setParameter('password',$password)); 

形式先后与setNameformat:

$this->widgetSchema->setNameFormat('user[%s]');

+0

嗯,你可以尝试设置的默认值函数:$ this-> setDefault( '密码', $密码); 对不起,我无法提供解决您所描述的问题......我只完成填充隐藏窗体使用默认值。 – 2011-05-28 04:48:13

回答

1

如果一个原则(或推动)的形式,我会通过在传递给窗体构造函数之前设置对象上的值,并从窗体中完全删除窗口小部件来做到这一点。

例如:

$o = new DoctrineOrPropelObject; 
$o->setPassword($myrandomstring); 
$f = new DoctrineOrPropelObjectForm($o); 

然后显示/形式保存像往常一样 - 密码值将权通过表单处理时保存被传递到数据库。

1

如果使用这样的:

$this->widgetSchema->setNameFormat('user[%s]'); 

然后你的表单输入字段可以在单个变量中检索:

$request->getParameter('user'); 

,并要指定需要价值的东西,如设置:

$request->setParameter('user[password]', $password); 

参考可以发现here

问候。

1

你可以重写窗体的保存方法,并添加$this->values[$field] = $value;

事情是这样的:

public function save($con = null) 
{ 
     $this->values['owner_id'] = $this->values['owners_ids'][2];` 
     return parent::save($con); 
}