Thanks for the reply Matthew, this has indeed sorted my problem. Sorry I should have noted the 'description' decorator previously.

My form is now working perfectly. I haven't seen many examples of an XML configuration for a form lying around. So for the benefit of the group, I include my working configuration for my user login form below. I'm certainly no Zend or Zend_Form expert, so I hope there are no major errors that might miss lead. Please all feel free to correct me!

<userLogin>
        <name>logIn</name>
        <action>/login</action>
        <method>post</method>
        <elements>
                <email>
                        <type>text</type>
                        <options>
                                <label>Email:</label>
                                <validators>
                                        <email>
                                                
<validator>EmailAddress</validator>
                                        </email>
                                </validators>
                                <filters>
                                        <tolower>StringToLower</tolower>
                                </filters>
                                <decorators>
                                        <viewhelper>
                                                <type>ViewHelper</type>
                                        </viewhelper>
                                        <label>
                                                <type>label</type>
                                        </label>
                                        <HtmlTag>
                                                <type>HtmlTag</type>
                                                <options>
                                                        <tag>div</tag>
                                                        
<class>input_text</class>
                                                </options>
                                        </HtmlTag>
                                </decorators>
                        </options>
                </email>
                <password>
                        <type>password</type>
                        <options>
                                <label>Password:</label>
<description><![CDATA[<a href="#">Forgotten Password</a>]]></ description>
                                <validators>
                                        <alnum>
                                                <validator>alnum</validator>
                                                
<breakChainOnFailure>true</breakChainOnFailure>
                                        </alnum>
                                        <stringlength>
                                                
<validator>StringLength</validator>
                                                <options>
                                                        <min>5</min>
                                                        <max>20</max>
                                                </options>
                                        </stringlength>
                                </validators>
                                <decorators>
                                        <viewhelper>
                                                <type>ViewHelper</type>
                                        </viewhelper>
                                        <label>
                                                <type>label</type>
                                        </label>
                                        <desc>
                                                <type>Description</type>
                                                <options>
                                                        <tag>p</tag>
                                                        <escape>0</escape>
                                                </options>
                                        </desc>
                                        <divWrapper>
                                                <type>HtmlTag</type>
                                                <options>
                                                        <tag>div</tag>
                                                        
<class>input_password</class>
                                                </options>
                                        </divWrapper>
                                </decorators>
                        </options>
                </password>
                <rememberme>
                        <type>checkbox</type>
                        <options>
                                <label>Remember my login from this 
computer</label>
                                <vlaue>0</vlaue>
                                <decorators>
                                        <viewhelper>
                                                <type>ViewHelper</type>
                                        </viewhelper>
                                        <label>
                                                <type>label</type>
                                        </label>
                                        <divWrapper>
                                                <type>HtmlTag</type>
                                                <options>
                                                        <tag>div</tag>
                                                        
<class>input_checkbox</class>
                                                </options>
                                        </divWrapper>
                                </decorators>
                        </options>
                </rememberme>
                <submit>
                        <type>submit</type>
                        <options>
                                <decorators>
                                        <viewhelper>
                                                <type>ViewHelper</type>
                                        </viewhelper>
                                        <divWrapper>
                                                <type>HtmlTag</type>
                                                <options>
                                                        <tag>div</tag>
                                                        
<class>input_submit</class>
                                                </options>
                                        </divWrapper>
                                </decorators>
                        </options>
                </submit>
        </elements>
</userLogin>

:wq
Greg

On 2 Apr 2008, at 16:21, Matthew Weier O'Phinney wrote:

Answer way down below...

-- Greg Frith <[EMAIL PROTECTED]> wrote
(on Wednesday, 02 April 2008, 03:17 PM +0100):
I fear this might not be my first post to the group in the next day or to in relation to Zend_Form, I just don't seem to be getting a complete
grasp of it yet.

My first problem. I am trying to implement mark-up for an element like
this:

<div class="input_password">
        <label for="">Password:</label>
        <input id="" name="" type="password" size="20" />
        <p><a href="#">Forgotten Password</a></p>
</div>

I configure my form using an XML config.  I can get the form element
wrapped in the div without any problems using the following config
snippet (which is the element configuration for this element):

<password>
        <type>password</type>
        <options>
                <label>Password:</label>
                <validators>
                        <alnum>
                                <validator>alnum</validator>
                                <breakChainOnFailure>true</breakChainOnFailure>
                        </alnum>
                        <stringlength>
                                <validator>StringLength</validator>
                                <options>
                                        <min>5</min>
                                        <max>20</max>
                                </options>
                        </stringlength>
                </validators>
                <decorators>
                        <viewhelper>
                                <type>ViewHelper</type>
                        </viewhelper>
                        <label>
                                <type>label</type>
                        </label>
                        <divWrap>
                                <type>HtmlTag</type>
                                <options>
                                        <tag>div</tag>
                                        <class>input_password</class>
                                </options>
                        </divWrap>
                </decorators>
        </options>
</password>

Now I understand that I cannot add a second HtmlTag decorator, but can anyone suggest any other way of achieving my element layout (adding the additional '<p><a href="#">Forgotten Password</a></p>' after the input
element) without using a customer decorator class?

Actually, you *can* add additional decorators of the same class using
aliasing. Try this:

   <?xml version="1.0"?>
   <configdata>
       <element>
           <decorators>
               <viewHelper>
                   <type>ViewHelper</type>
               </viewHelper>
               <label>
                   <type>Label</type>
               </label>
               <div>
                   <type>
                       <div>HtmlTag</div>
                   </type>
                   <options>
                       <tag>div</tag>
                       <class>input_password</class>
                   </options>
               </div>
               <p>
                   <type>
                       <p>HtmlTag</p>
                   </type>
                   <options>
                       <tag>p</tag>
                   </options>
               </p>
           </decorators>
       </element>
   </configdata>

The relevant parts are the <div> and <p> decorators -- notice that the
type in each is an array consisting of a single key/value pair -- the
key is the internal alias by which you'll refer to it, and the value is
the actual decorator type.

That said, you probably want to use the element description for setting that particular content, and then add a 'Description' decorator to your
decorator stack.

--
Matthew Weier O'Phinney
PHP Developer            | [EMAIL PROTECTED]
Zend - The PHP Company   | http://www.zend.com/

Reply via email to