jjzjj

php - Zend_Form_Element : add class if it contains errors

coder 2024-04-05 原文

在我当前的应用程序中,我想在包含错误的信息(又称未验证)时为红色选择红色。当表单元素包含一个或多个错误时,它应该有一个错误类(这样我就可以相应地设置样式)。我尝试遍历元素,看看它们是否有效,但这很快就会变得非常丑陋。

我怎样才能更好地完成这项工作?

谢谢

编辑:这是我目前的解决方法(并完成工作,但很脏)

$post = $request->getPost();
foreach ($contactForm->getElements() as $element) {
    if (!$element->isValid($post[$element->getName()])) {
        $element->setAttrib('class', 'error');
    }
}

最佳答案

这里有一些想法......

  1. 您可以使用 isValid 验证整个表单,而不是在每个表单元素上调用 isValid,然后按照您的问题遍历元素,而是使用 if ($element->hasErrors ()) 判断是否需要给元素添加错误类。

  2. 您可能希望从 Zend_Form 扩展并向您的新 Form 类添加一个辅助方法来为您执行此操作。例如,添加一个名为 highlightErrorElements() 的方法或类似的方法,如果您对 $form->isValid() 的调用不成功,则可以简单地调用 $form->highlightErrorElements() 将遍历每个表单元素并查看它是否有错误并在必要时应用样式。

例子:

<?php

class Application_Form_Base extends Zend_Form
{
    public function __construct()
    {
        // this is where i normally set up my decorators for the form and elements
        // additionally you can register prefix paths for custom validators, decorators, and elements

        parent::__construct();
        // parent::__construct must be called last because it calls $form->init()
        // and anything after it is not executed
    }

    public function highlightErrorElements()
    {
        foreach($this->getElements() as $element) {
            if($element->hasErrors()) {
                $element->setAttrib('class', 'error');
            }
        }
    }
}

某处,在 Controller 中...

$form = new Application_Form_Register(); // this extends Application_Form_Base
if ($form->isValid($this->getRequest()->getPost())) {
    // add user etc
} else {
    $form->highlightErrorElements();
    // other error logic
}

$this->view->form = $form;

关于php - Zend_Form_Element : add class if it contains errors,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8991132/

有关php - Zend_Form_Element : add class if it contains errors的更多相关文章

  1. ruby-on-rails - form_for 中不在模型中的自定义字段 - 2

    我想向我的Controller传递一个参数,它是一个简单的复选框,但我不知道如何在模型的form_for中引入它,这是我的观点:{:id=>'go_finance'}do|f|%>Transferirde:para:Entrada:"input",:placeholder=>"Quantofoiganho?"%>Saída:"output",:placeholder=>"Quantofoigasto?"%>Nota:我想做一个额外的复选框,但我该怎么做,模型中没有一个对象,而是一个要检查的对象,以便在Controller中创建一个ifelse,如果没有检查,请帮助我,非常感谢,谢谢

  2. ruby-on-rails - rails : How to make a form post to another controller action - 2

    我知道您通常应该在Rails中使用新建/创建和编辑/更新之间的链接,但我有一个情况需要其他东西。无论如何我可以实现同样的连接吗?我有一个模型表单,我希望它发布数据(类似于新View如何发布到创建操作)。这是我的表格prohibitedthisjobfrombeingsaved: 最佳答案 使用:url选项。=form_for@job,:url=>company_path,:html=>{:method=>:post/:put} 关于ruby-on-rails-rails:Howtomak

  3. ruby-on-rails - Simple_form 必填字段不起作用 - Ruby on Rails - 2

    我在RoR应用程序中有一个提交表单,是使用simple_form构建的。当字段为空白时,应用程序仍会继续下一步,而不会提示错误或警告。默认情况下,这些字段应该是required:true;但即使手动编写也行不通。该应用有3个步骤:NewPost(新View)->Preview(创建View)->Post。我的Controller和View的摘录会更清楚:defnew@post=Post.newenddefcreate@post=Post.new(params.require(:post).permit(:title,:category_id))ifparams[:previewButt

  4. ruby-on-rails - 这个 C 和 PHP 程序员如何学习 Ruby 和 Rails? - 2

    按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭9年前。我来自C、php和bash背景,很容易学习,因为它们都有相同的C结构,我可以将其与我已经知道的联系起来。然后2年前我学了Python并且学得很好,Python对我来说比Ruby更容易学。然后从去年开始,我一直在尝试学习Ruby,然后是Rails,我承认,直到现在我还是学不会,讽刺的是那些打着简单易学的烙印,但是对于我这样一个老练的程序员来说,我只是无法将它

  5. ruby-on-rails - encode_www_form 将空格转换为 + 而不是 %20 - 2

    我正在尝试从使用RubyonRails的散列创建http参数,我尝试使用URI.encode_www_form(params),但这没有正确生成参数。下面是我的哈希值params['Name'.to_sym]='NiaKun'params['AddressLine1'.to_sym]='AddressOne'params['City'.to_sym]='CityName'这个方法把空格转成+,我要的是把空格转成%20我收到"Name=Nia+Kun&AddressLine1=Address+One&City=City+Name"但我需要将此空格转换为%20

  6. ruby-on-rails - 尝试编辑时,Rails form_for 结果为 POST 而不是 PUT - 2

    我正在使用Rails4并遇到以下错误。RoutingErrorNoroutematches[POST]"/logs/1/meals/13/edit我正在使用:meal传递模型对象的form_for,并且编辑页面正确呈现。但是,Rails似乎并没有检查膳食对象是否已经保存,因此它一直尝试将表单发送到#create操作并尝试发出POST请求,而不是将表单发送到更新操作并进行当我点击提交时一个PUT请求。我如何让form_for识别我正在尝试更新现有对象并且需要PUT而不是POST?其他一切正常,我已经运行了所有迁移。我是Rails的新手,几乎一整天都在尝试自己解决这个问题。请帮忙!请注意,

  7. ruby-on-rails - 将 Rails Form Helpers 与序列化的自定义类一起使用 - 2

    我试图在单个数据库字段中保存选项的散列。该表单能够将数据保存到数据库,但当我去编辑它时无法再次检索它(例如,除了wp_options字段之外,所有其他字段都已预填充)。classProfile这是我的自定义类:classWP_Optionsattr_accessor:wp_name,:wp_desc,:wp_limitend在我的表单中:true)do|f|%>......在我的Controller中:@profile=Profile.new(:wp_options=>WP_Options.new)在我的数据库列“wp_options”中:---!map:ActiveSupport::

  8. ruby-on-rails - rails : Form Select From Array/List Instance Variable - 2

    我有一个Rails应用程序,其中有一个表单选择(下拉列表)。例如,用户可以从1,2,3,4,5中选择例如,我将这些值作为实例变量存储在数组中,例如:@formlist=[1,2,3,4,5]我怎样才能简单地将数组放入表单选择助手而不是单独列出每个项目。目前我的代码是:"1",2=>"2",3=>"3",4=>"4",5=>"5"})%> 最佳答案 这应该有效:f.select(:heat_level,@formlist.map{|value|[value,value]})一些解释:formselect可以处理类似哈希和类似数组的选项

  9. ruby-on-rails - 如何将样式添加到 form_for 中的单个输入 - 2

    我正在使用带HAML的Rails框架,并且我有Bootstrap设置。我将如何单独格式化字段输入。我希望名称输入字段占屏幕的60%,向左浮动,价格输入字段占屏幕的25%,向右浮动。我想我是在问如何将类添加到form_for中的单个输入。谢谢=form_for@product,:url=>products_path,:html=>{:id=>"fileupload",:multipart=>true}do|f|%p=f.label:name=f.text_field:name#iwanttoformatthis%p=f.label:price=f.text_field:price

  10. ruby-on-rails - Rails 还是 Sinatra? PHP程序员入门学习哪个好? - 2

    按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭10年前。我使用PHP的时间太长了,对它感到厌倦了。我也想学习一门新语言。我一直在使用Ruby并且喜欢它。我必须在Rails和Sinatra之间做出选择,那么您会推荐哪一个?Sinatra真的不能用来构建复杂的应用程序,它只能用于简单的应用程序吗?

随机推荐