【问题标题】:Symfony validators, widgets for backendSymfony 验证器,后端小部件
【发布时间】:2011-03-02 10:48:51
【问题描述】:

我使用 symfony 1.4.8 。我使用 SfExtraFormPlugin 将 ReCaptcha 添加到我的表单中。我的 " public function 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')
    ));
...

我也有后端应用程序,以及我的 "public function configure()"

 public function configure()
  {
    parent::configure();
....
}

所以当我想从后端添加帖子时,我遇到了一个错误:由于某些错误,该项目尚未保存。 有没有办法仅将 ReCaptcha 的小部件和验证器删除到我的后端?现在我只看到一种方法,就是删除

父级::configure();

并将所有小部件和验证器与前端小部件和验证器分开写入后端.. :( p.s 对不起我的英语不好 p.p.s 提前感谢您的回答;-)

【问题讨论】:

    标签: php symfony1 symfony-forms


    【解决方案1】:

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

    // 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...
    }
    

    它应该工作:)

    【讨论】:

      【解决方案2】:

      我找到第二种方法:

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

      【讨论】:

      • 不推荐这种方式。您的表单不应该知道环境。告诉他是管制员的工作。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-11
      • 2012-04-28
      • 2013-10-11
      • 2014-06-25
      • 1970-01-01
      相关资源
      最近更新 更多