Php Symfony验证器,用于后端的小部件

Php Symfony验证器,用于后端的小部件,php,symfony1,symfony-forms,Php,Symfony1,Symfony Forms,我使用symfony 1.4.8。我使用SfExtraFormPlugin将ReCaptcha添加到我的表单中。我在我的“公共函数配置()” .... $this->widgetSchema['captcha'] = new sfWidgetFormReCaptcha(array( 'public_key' => sfConfig::get('app_recaptcha_public_key') )); $this->validatorSche

我使用symfony 1.4.8。我使用SfExtraFormPlugin将ReCaptcha添加到我的表单中。我在我的“公共函数配置()”

....     
$this->widgetSchema['captcha'] = new sfWidgetFormReCaptcha(array(
      'public_key' => sfConfig::get('app_recaptcha_public_key')
    ));


$this->validatorSchema['captcha'] = new sfValidatorReCaptcha(array(
      'private_key' => sfConfig::get('app_recaptcha_private_key')
    ));
...
我也有后端应用程序,还有我的“公共函数配置()”

 public function configure()
  {
    parent::configure();
....
}
因此,当我想从后端添加帖子时,我有一个错误:由于一些错误,该项目尚未保存。 有没有办法只在我的后端删除ReCaptcha的小部件和验证程序?现在我只看到一种方法,那就是移除

parent::configure()

....     
$this->widgetSchema['captcha'] = new sfWidgetFormReCaptcha(array(
      'public_key' => sfConfig::get('app_recaptcha_public_key')
    ));


$this->validatorSchema['captcha'] = new sfValidatorReCaptcha(array(
      'private_key' => sfConfig::get('app_recaptcha_private_key')
    ));
...
并将所有小部件和验证程序与前端小部件和验证程序分开写入后端..:( p、 It’很抱歉我的英语不好
p、 请提前感谢您的回答;-)

在表单中添加选项。当您实例化它时,您应该知道您是在后端还是在前端

// in your actions.class.php
$this->form = new MyForm(null, array('from_backend' => true)); // or false...

// in your form
if (!$this->getOption('from_backend'))
{
  // add the recaptcha widget and validator...
}
应该有用:)

我找到了第二种方法:

if ( sfConfig::get('sf_app') == "frontend" )
{
   widget and validator
}
elseif ( sfConfig::get('sf_app') == "backend" )
{
   widget and validator
}

不建议采用这种方式。您的表单不应该知道环境。控制员的工作就是告诉他。