【问题标题】:zend framework 2 display if form element is required in view如果视图中需要表单元素,则 zend 框架 2 显示
【发布时间】:2024-01-21 01:58:01
【问题描述】:

在我看来,我想添加一条消息来指示是否需要表单元素。我正在使用 inputFilter 设置验证选项,这些选项都可以正常工作,但是在发布表单之前(在我可以访问消息之后),我找不到任何方法可以在视图中访问这些选项。

$this->add(array(
                    'name'     => 'title',
                    'required' => true,
                    'filters'  => array(
                            array('name' => 'StripTags'),
                            array('name' => 'StringTrim'),
                    ),
                    'validators' => array(
                            array(
                            'name' =>'NotEmpty', 
                                'options' => array(
                                    'messages' => array(
                                        \Zend\Validator\NotEmpty::IS_EMPTY => 'Please enter a title (e.g \'Property\')' 
                                    ),
                                ),
                            ),
                            array(
                                    'name'    => 'StringLength',
                                    'options' => array(
                                            'encoding' => 'UTF-8',
                                    ),
                            ),
                    ),
            ));   

【问题讨论】:

  • 你测试过我的答案吗?
  • 即将试一试,谢谢

标签: php validation zend-framework2 zend-form


【解决方案1】:

在你看来应该是这样的:

$form->getInputFilter()->get("fieldName")->isRequired();

$form->getInputFilter()->get("fieldName")->getRequired();

不记得了

解决方法:

您可以设置所需的属性(我想您已经这样做了),然后添加一个小 jquery 来附加消息,如下所示:

$(document).ready(function (){
     $("*:required")
        //Optional add red boder--
        .css('border','1px solid #FF0000');
        //--Optional add red boder
           .closest('label')
                  .append('<br /><span><?= $this->translate('This field is mandatory') ?></span>');
});

不幸的是,我可以重现您的问题,也许如果您发布控制器代码,我可以查看是否还有其他问题。

【讨论】:

  • 我对此有非常奇怪的行为,对于给定的元素,在发布之前它返回 false,在使用空值发布之后它返回 true。
  • 我已经编辑了我的答案,建议使用 Jquery 解决方法。
  • 感谢 bruno,我将在以后添加一个完整的 js 验证层,但我需要让它在第一个实例中运行非 js。我可能只是将其硬编码到视图中,然后手动将其下沉。
最近更新 更多