2011-03-02 41 views
0

我使用symfony 1.4.8。我使用SfExtraFormPlugin將ReCaptcha添加到我的表單中。我有我的「公共職能配置()」控件和驗證它Symfony驗證器,用於後端的小部件

....  
$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的Widget和驗證器移除到我的後端?現在我看到只有一種方法,它是刪除

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