Symfony2 forms und <input> Muster-Attribut
Ich versuche, ein Formular erstellen, in Symfony2 mit einem text-input-Feld akzeptiert eine Zeichenfolge, bestehend aus 6 Ziffern gefolgt von einem Bindestrich, gefolgt von vier Ziffern (z.B. 123456-7890). Es funktioniert, aber ich bin immer inkonsistente HTML-markup abhängig, wie genau füge ich das Feld in das Formular.
Dies ist aus der Einheit:
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}$/',
)));
}
Aus der form-definition:
class KursistType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('cpr');
...
}
}
Aus der twig template:
<form action= ... >;
{{ form_row(form.cpr) }}
...
</form>
Dies ist, was der browser source-code aussieht - man beachte die Muster und maxlength Attribute:
<label for="KursistType_cpr" class="required">HLW</label><input type="text" id="KursistType_cpr" name="KursistType[cpr]" required="required" maxlength="11" pattern="\d{6}-\d{4}" value="123456-7890" />
Möchte ich mein eigenes label eher als die Standard, so ich änderung der Formular-Feld-defition:
Klasse KursistType erstreckt AbstractType { public function buildForm(FormBuilderInterface $builder, array $options) { $builder->add('cpr','text', array('label' => 'CPR')); ...
Aber jetzt wenn ich einen Blick in den browser-Quelltext, der Muster und maxlength Attribute gegangen:
<label for="KursistType_cpr" class="required">HLW</label><input type="text" id="KursistType_cpr" name="KursistType[cpr]" required="required" value="123456-7890" />
Gibt es eine Möglichkeit, ändern Sie das Etikett mit der FormBuilderInterface ohne diese Attribute fallen gelassen wird?
- Ich sieht aus wie ein Symfony2-bug ist, sollte es normal funktionieren...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Diese Inkonsistenz ist durch geben Sie Optionen raten was passiert im ersten Fall, wenn Sie nicht bieten zusätzliche Informationen über das Feld in den form builder.
Als option raten deaktiviert ist, können Sie Feld-Attribute explizit.
Oder auch Sie können halten Sie option raten aktiviert, sondern überschreiben nur label-Attribut