Symfony2 で、6 桁、ダッシュ、4 桁 (例: 123456-7890) で構成される文字列を受け入れるテキスト入力フィールドを持つフォームを作成しようとしています。それは機能しますが、フィールドをフォームに追加する方法によっては、HTML マークアップに一貫性がありません。
これはエンティティからのものです:
class Kursist
{
...
/**
* @ORM\Column(type="string", length=11)
*/
protected $cpr;
....
public static function loadValidatorMetadata(ClassMetadata $metadata)
{
$metadata->addPropertyConstraint('cpr', new NotBlank());
$metadata->addPropertyConstraint('cpr', new Regex(array(
'pattern' => '/^\d{6}-\d{4}$/',
)));
}
フォーム定義から:
class KursistType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('cpr');
...
}
}
小枝テンプレートから:
<form action= ... >;
{{ form_row(form.cpr) }}
...
</form>
ブラウザのソース コードは次のようになります。pattern 属性と maxlength 属性に注意してください。
<label for="KursistType_cpr" class="required">Cpr</label><input type="text" id="KursistType_cpr" name="KursistType[cpr]" required="required" maxlength="11" pattern= "\d{6}-\d{4}" value="123456-7890" />
デフォルトではなく独自のラベルを使用したいので、フォーム フィールドの定義を変更します。
クラス KursistType は AbstractType を拡張します { public function buildForm(FormBuilderInterface $builder, array $options) { $builder->add('cpr','text', array('label' => 'CPR')); ...
しかし、ブラウザのソース コードを見ると、pattern属性とmaxlength属性が削除されています。
<label for="KursistType_cpr" class="required">CPR</label><input type="text" id="KursistType_cpr" name="KursistType[cpr]" required="required" value="123456-7890" />
これらの属性を削除せずに FormBuilderInterface を使用してラベルを変更する方法はありますか?