【问题标题】:Zend_Form with CSSZend_Form 与 CSS
【发布时间】:2012-05-17 07:46:59
【问题描述】:

我是 zend 的新手,我在一定程度上已经编码,但不知道如何使用装饰器等来装饰我的表单

这是我的旧 HTML

<div class="col_6 pre_3 padding_top_60" style="padding-top:0">
<div class="widget clearfix">
    <div class="widget_inside">
        <p class="margin_bottom_15">Kindly enter Username and  Password.</p>
        <span><?= $this->error;?></span>
        <form method='post' action='<?php echo $this->url(array(), 'login') ?>' onsubmit="return validateForm();">
            <div class="form">
                <div class="clearfix" id="div_username">
                    <label class="lable-2">Username</label>
                    <div class="input">
                        <input type="text" class="xlarge" name="username" id="username" value="<?php echo $this->form['username'] ?>"/>
                        <span id="error_message_username"></span>
                    </div>
                </div>
                <div class="clearfix" id="div_password">
                    <label class="lable-2">Password</label>
                    <div class="input">
                        <input type="password" class="xlarge" name="password" id="password" value="<?php echo $this->form['password'] ?>"/>
                        <span id="error_message_Password"></span>
                    </div>
                </div>
                <div class="clearfix">
                <label></label>
                    <div class="input">
                        <input type="checkbox" name="remember" value="1" <?php echo ($this->form['remember'] == 1)?'checked="checked"':'' ?>/></span> Stay signed in
                        <span style="margin-left:10px">Forgot <a href="javascript: void(0);" rel="UserID" id="forgot_userid">User ID</a> or <a href="javascript: void(0);" rel="Password" id="forgot_password">Password</a> </span>
                    </div>
                </div>

                <div class="clearfix">
                    <label></label>
                    <div class="input">
                        <input type="submit" value="Login"  class="medium button blue blue-1"/>
                </div> </div>
            </div>
        </form>
    </div>
</div>

这是我的表格

<?php

class Application_Form_Loginform extends Zend_Form{

public function init()
{
    /* Form Elements & Other Definitions Here ... */

    $this->setMethod('post');
    $this->addElement('text','username',array(
        'label'     => 'UserName :',
        'required'  => true,
        'filters'   => array('StringTrim')
    ));

    $this->addElement('password','password',array(
        'label'    => 'Password',
        'required' => 'true',
        'filters'  => array('StringTrim')
    ));
    $this->addElement('submit','submit',array(
       'ignore'=>'true',
       'label'=>'Login'
    ));
}

}

问题是我怎样才能让我用php制作的表单等于上面的HTML??

【问题讨论】:

    标签: zend-framework zend-form zend-form-element zend-decorators


    【解决方案1】:

    Zend Form 使用起来很痛苦,尤其是装饰器。

    您应该改用 View Script 装饰器。

    请看这里:http://framework.zend.com/manual/en/zend.form.standardDecorators.html#zend.form.standardDecorators.viewScript

    除了具有高学习曲线的 Zend Form 装饰器之外,它还将视图代码与逻辑和验证代码混合在一起。

    这不是一件好事,特别是如果您有前端开发人员设计和处理表单。

    这也使得表单外观的原型制作变得困难,因为您必须不断调整装饰器代码。

    话虽如此,Zend Form 在使验证相对轻松方面做得很好。但另一个抱怨是我认为它不太适合模型验证。

    【讨论】:

    • 好答案,看看这个答案和代码示例stackoverflow.com/q/10349340/1145086
    • 很好,我应该先检查一下 SO 是否有现有答案。正要写一些示例代码。
    • Zend_Form 在我认为的“预验证”和过滤方面做得很好。在持久化数据之前,我使用模型或服务进行进一步验证。
    • 使用起来并不痛苦。你只需要理解它并接受它!使用起来很有趣!
    • 如果您在使用 Zend_Form_Decorators 时遇到问题,这主要是由于您的 HTML 中的标记过于复杂。
    【解决方案2】:

    我同意装饰器很复杂,但是当您知道如何使用它们时,它们可以节省大量时间。我们将它们用于我们的管理面板。我们最近将它从表格布局更改为几个字段集和 div,只花了几个小时就更改了 70 多个表单。

    你的验证器应该是这样的:

    Form:
    form, 
    htmlTag (div, class=form)
    formElements
    
    Elements:
    viewHelper
    error, placement => append
    htmlTag (div, class input)
    Label, placement => prepend
    htmlTag (div, class=clearfix)
    

    请记住,您需要为每个 htmlTag 装饰器设置不同的键,否则它们会被覆盖。像这样:

    ....
    array('inputHtmlTag' => 'htmlTag, array('tag' => 'div', 'class' => 'input'), 
    ....
    

    要了解我如何处理复杂的 Twitter Bootstrap 装饰器,请参阅 https://github.com/tomasfejfar/Zend-Form-Bootstrap/blob/master/library/Bootstrap/Form.php 在那里您可以找到如何实现自己的标记的线索。

    【讨论】:

      猜你喜欢
      • 2011-03-10
      • 1970-01-01
      • 2011-07-31
      • 1970-01-01
      • 1970-01-01
      • 2011-01-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多