2011-03-02 8 views
0

私はsymfony 1.4.8を使用しています。 SfExtraFormPluginを使用してReCaptchaを自分のフォームに追加します。symfonyバリデーター、バックエンドのウィジェット

public function configure() 
    { 
    parent::configure(); 
.... 
} 
:私は "()パブリック関数の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()"それのための私のでそれをウィジェットとバリ持ちます

バックエンドから投稿を追加するときにエラーが発生しました。エラーのためにアイテムが保存されていません。 ReCaptchaのウィジェットとバリデータをバックエンドにのみ削除する方法はありますか?今は片方しか見ることができません。それは削除することです

parent :: configure();私の悪い英語 PPSのため申し訳ありません

、すべてのウィジェットを作成し、フロントエンドのウィジェットとバリデータとは別にバックエンドにバリ... :( PSは、あなたの答え;-)

答えて

2

のために事前にありがとうございオプションを追加します。あなたのフォームに。インスタンス化するときは、バックエンドかフロントエンドかを知る必要があります。

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

それは私が第二の方法を見つける:)

0

を動作するはずです:

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

この方法は推奨されません。あなたのフォームは環境を知っているはずではありません。コントローラーが彼に話すのは仕事だ。 – Gregoire

関連する問題