2011-02-08 24 views
1

私の狂ったデザイナーは、フォームが提出され、空のフィールドのために無効である場合、フィールド内に「必須」のメッセージが表示されたい(赤色)ようにします。Symfonyフォーム:エラー時にデフォルト/値を設定しますか?

問題の形式は、ログインプロンプトであり、私は私が値を設定してクラスを追加するために管理してきましたsfGuardFormSignin

を拡張するカスタムクラス..

$this->widgetSchema['username']->setAttribute('class','red'); 
$this->widgetSchema['username']->setDefault('Required');

を使用しています。しかし、usernameフィールドが無効で、Requiredエラーのために、これをどうすればいいですか?

パスワードフィールドでは同じと仮定します。事前に

感謝

EDIT:アドバイスgreg0ireため

感謝。私はそれを試してみましたが、sfWidgetFormSchemaFormatterのformatRowメソッドはヒットしていないようです。これは私のフォームがsfGuardFormSigninを拡張し、sfGuardAuthプラグインを使用しているためですか?

class FrontendsfGuardFormSignin extends sfGuardFormSignin 
{ 
    public function configure() 
    { 
    parent::configure(); 

    // This works! 
    $this->widgetSchema['username']->setLabel('Email'); 

    // I copied this from the link you pasted 
    $decorator = new myWidgetFormSchemaFormatterCustom($this->getWidgetSchema()); 
    $this->widgetSchema->addFormFormatter('custom', $decorator); 
    $this->widgetSchema->setFormFormatterName('custom'); 
    } 
}

/lib/widget/myWidgetFormSchemaFormatterCustom.class.php

class myWidgetFormSchemaFormatterCustom extends sfWidgetFormSchemaFormatter 
{ 

    public function __construct(sfWidgetFormSchema $widgetSchema) 
    { 
    parent::__construct($widgetSchema); 
    } 

    public function formatRow($label, $field, $errors = array(), $help = '', $hiddenFields = null) 
    { 
    // Nothing happens!? 
    var_dump($errors); 
    die(); 
    parent::formatRow($label, $field, $errors, $help, $hiddenFields); 
    } 

}

答えて

2
$widget->render(array('value' => $widget->getError())); 
+0

Danさん、ありがとうございました。カスタムウィジェットを作成するのではなく、テンプレートに必要なものを処理することができました。 –

1

デザイナー、このようなクレイジーなアイデアを持っている...

あなたがこれを行うにはwrite a custom schema formatterする必要があります。これを達成するには、おそらくを上書きする必要があります。

このメソッドの$errors配列引数を分析し、その中に「必須」エラーがある場合は、特別な処理を行います。質問に投稿したコードを使用する必要はありません。

関連する問題