私の狂ったデザイナーは、フォームが提出され、空のフィールドのために無効である場合、フィールド内に「必須」のメッセージが表示されたい(赤色)ようにします。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);
}
}
Danさん、ありがとうございました。カスタムウィジェットを作成するのではなく、テンプレートに必要なものを処理することができました。 –