• Willkommen im Zend Framework Forum

    ZF1 Zend Framework 1 + ZF2 Zend Framework 2

    Das Zend Framework Forum ist seit 2006 die erste Anlaufstelle für Zend Framework Entwickler in Deutschland. Mit über 70.000 Beiträgen und einer steigenden Nutzerzahl bietet das Forum hilfreiche Themen und ZF-Tutorials für professionelle Entwickler, fortgeschrittene Programmierer sowie Zend Framework Einsteiger.
    Wenn dies Dein erster Besuch in der Zend Framework Community ist, lies bitte zuerst die Hilfe - FAQ durch. Du musst Dich registrieren, bevor Du Beiträge verfassen kannst. Klicke oben auf 'Registrieren', um die Registrierung zu starten. Du kannst auch jetzt schon Beiträge lesen. Hier im Forum findest Du die Zend Framework Hilfe, die Du suchst!

    Grüße an alle Zend Framework Entwickler. Das Team vom Zend Framework Forum!

    Drupal Agentur

Decorator Problem

gingin

New member
Moin

Ich versuche in einem Emailformular input und textarea mit class=xxx auszustatten, es klappt nicht so ganz 100%ig

mein decorator:

PHP:
protected $_standardElementDecorator = array(
    'ViewHelper',
    array('Errors', array('escape' => false, 'class' => 'text-error', 'placement' => 'append')),
    array('Description', array('tag' => 'span', 'class' => 'description ie9.show')),
    array('Label', array('escape' => false, 'class' => 'col-sm-2 control-label')),
    array('HtmlTag',
        array('tag' => 'div','class' => 'form-group'),
        array('tag' => 'div','class' => 'col-sm-10'),
    )
);
erzeugt folgende form:

HTML:
<form id="emailform" name="emailform" enctype="application/x-www-form-urlencoded" class="form-horizontal"
      action="contact" method="post">
    <dl class="zend_form">
        <div class="form-group">
            <div class="form-group">
                <label for="name" class="col-sm-2 control-label required">Name</label>
                <input type="text" name="name" id="name" value="" title="name" placeholder="Name">
            </div>
            <div class="form-group">
                 <label for="email" class="col-sm-2 control-label required">Email</label>
                 <input type="text" name="email" id="email" value="" title="Email" placeholder="Email">
             </div>
            <div class="form-group">
                 <label for="message" class="col-sm-2 control-label required">Nachricht</label>
                <textarea name="message" id="message" rows="4" cols="50" title="Nachricht"
                          placeholder="Nachricht"></textarea></div>
           </div>
        <fieldset id="fieldset-mailsubmit">
            <i class="fa fa-envelope"></i>
            <input type="submit" name="submit" id="btn-submit" value="Email senden" title="Email senden" class="btn">
        </fieldset>
    </dl>
</form>
dies wäre das gewünschte Ziel:


<input type="email" class="form-control" ...>
<input type="text" class="form-control" ...>
<textarea class="form-control" ...>

wie bekomme ich das im Decorator hin ?
das dl ... bekomme ich auch nicht weg

[link]http://getbootstrap.com/css/#forms[/link]

Ich danke für Eure Hilfe!!

Gruß Gina
 
Zuletzt bearbeitet:

Kaiuwe

Super-Moderator
<input type="email" class="form-control" ...>
<input type="text" class="form-control" ...>
<textarea class="form-control" ...>

wie bekomme ich das im Decorator hin ?
Die Klasse „form-control“ gibst du direkt dem Element mit. Der „ViewHelper“-Dekorierer holt diese sich dann selbst.

das dl ... bekomme ich auch nicht weg
Hier musst du die Dekorierer vom Formular anpassen. Innerhalb des Formulars einfach:
PHP:
$this->setDecorators(array('FormElements', 'Form'));
 

gingin

New member
Kaiuwe, ich danke Dir !!

dl ist weg ... und input & Co wie Du gesagt hast - wunderbar !

das wird jetzt produziert:

HTML:
<form id="emailform" name="emailform" enctype="application/x-www-form-urlencoded" class="form-horizontal"
      action="contact" method="post">

    <div class="form-group">
        <label for="name" class="col-sm-2 control-label required">Name</label>
        <input type="text" name="name" id="name" value="" title="name" placeholder="Name" class="form-control">
    </div>
    <div class="form-group">
        <label for="email" class="col-sm-2 control-label required">Email</label>
        <input type="text" name="email" id="email" value="" title="Email" placeholder="Email" class="form-control">
    </div>
    <div class="form-group">
        <label for="message" class="col-sm-2 control-label required">Nachricht</label>
        <textarea name="message" id="message" rows="4" cols="50" title="Nachricht" placeholder="Nachricht" 
                  class="form-control"></textarea>
    </div>
    <fieldset id="fieldset-mailsubmit">
        <i class="fa fa-envelope"></i>
        <input type="submit" name="submit" id="btn-submit" value="Email senden" title="Email senden" class="btn">
    </fieldset>
</form>
jetzt würde nur noch fehlen: <div class="col-sm-10">...</div>

z.B.:
<div class="col-sm-10">
<input type="text" class="form-control" ...>
</div>
 

Kaiuwe

Super-Moderator
jetzt würde nur noch fehlen: <div class="col-sm-10">...</div>

z.B.:
<div class="col-sm-10">
<input type="text" class="form-control" ...>
</div>
Mal aus dem Kopf:
PHP:
'ViewHelper',
array(
    // Dekorierer-Name
    array('col' => 'HtmlTag'),
    // Dekorierer-Optionen
    array('tag' => 'div', 'class' => 'col-sm-10'),
),
'Label',
array(
    // Dekorierer-Name
    array('formGroup' => 'HtmlTag'),
    // Dekorierer-Optionen
    array('tag' => 'div', 'class' => 'form-group'),
),
 

gingin

New member
Kaiuwe, wouw ... Mensch, da wär ich niemals alleine hingekommen !

so wird jetzt exakt das bootstrap formular widergegeben:
PHP:
protected $_standardElementDecorator = array(
    'ViewHelper',
    array(
        // Dekorierer-Name
        array('col' => 'HtmlTag'),
        // Dekorierer-Optionen
        array('tag' => 'div', 'class' => 'col-sm-10'),
    ),
    array('Label', array('escape' => false, 'class' => 'col-sm-2 control-label')),
    array(
        // Dekorierer-Name
        array('formGroup' => 'HtmlTag'),
        // Dekorierer-Optionen
        array('tag' => 'div', 'class' => 'form-group'),
    ),
);
Herzlichen Dank!! schönen Abend :)
 
Oben