Валидаторы Symfony, виджеты для бэкэнда - PullRequest
0 голосов
/ 02 марта 2011

Я использую Symfony 1.4.8. Я добавляю ReCaptcha к моей форме, используя SfExtraFormPlugin. У меня есть виджет и валидатор для него в моей "публичной функции 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')
    ));
...

У меня также есть приложение для бэкенда, и моя "публичная функция configure ()" для него:

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

Поэтому, когда я хочу добавить сообщение из моего бэкэнда, у меня появляется ошибка: Элемент не был сохранен из-за некоторых ошибок. Есть ли способ удалить виджет и валидаторы для ReCaptcha только в мой бэкэнд? Теперь я вижу только один способ, это удалить

Родитель :: Configure ();

и написать все виджет и валидаторы для бэкэнда отдельно от виджета внешнего интерфейса и валидаторов .. :( извините за мой плохой английский p.p.s Заранее спасибо за ответы; -)

Ответы [ 2 ]

2 голосов
/ 02 марта 2011

Добавьте опцию к вашей форме. Когда вы создаете его, вы должны знать, находитесь ли вы на бэкэнде или на веб-интерфейсе.

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

Должно работать :) 1004 *

0 голосов
/ 02 марта 2011

Нахожу второй путь:

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