gpt4 book ai didi

forms - 向 zf2 表单元素标签添加所需的后缀

转载 作者:行者123 更新时间:2023-12-02 07:36:14 25 4
gpt4 key购买 nike

我使用以下代码将电子邮件元素添加到我的 Zend Framework 2 表单中:

$form->add(array(
'type' => 'Zend\Form\Element\Email',
'name' => 'email',
'options' => array(
'label' => 'Email'
),
));

默认情况下,此元素的 getInputSpecification() 方法设置为 true。但是元素对象不包含任何必需的属性,因此标记也不包含。

如何向我的表单添加标记,以便我的 css 能够添加所需的后缀?或者至少:自定义 View 助手如何获取“必需”设置?

我意识到我可以只添加一个必需的属性,但感觉不对,因为它可能与内部元素的“必需”设置不同步。

最佳答案

尽管 Sam 和 Cellulosa 的响应是一个非常好的解决方案。

我担心随着 ZF2 框架的发展,这些将无法扩展。尽管他们扩展了 Zend\Form\View\Helper\FormLabel,但 __invoke 方法中有很多重复的代码。随着对框架和原始帮助程序的更改,我们将不得不不断更新您的新表单 View 帮助程序以复制原始 __invoke 方法中的任何更改。

一个更简单的解决方案是使用提供的参数调用 parent::__invoke() 到 ViewHelper 以避免重复代码。

所以,这里是解决方案:

在 Application/src/Application/Form/View/Helper/RequiredMarkInFormLabel.php 创建 ViewHelper

<?php
namespace Application\Form\View\Helper;

use Zend\Form\View\Helper\FormLabel as OriginalFormLabel;
use Zend\Form\ElementInterface;

/**
* Add mark (*) for all required elements inside a form.
*/
class RequiredMarkInFormLabel extends OriginalFormLabel
{
/**
* Invokable
*
* @return str
*/
public function __invoke(ElementInterface $element = null, $labelContent = null, $position = null)
{

// invoke parent and get form label
$originalformLabel = parent::__invoke($element,$labelContent,$position);

// check if element is required
if ($element->hasAttribute('required')) {
// add a start to required elements
return '<span class="required-mark">*</span>' . $originalformLabel;
}else{
// not start to optional elements
return $originalformLabel;
}
}
}

记得在Application/config/module.config.php 注册ViewHelper

'view_helpers' => array(
'invokables'=> array(
'formlabel' => 'Application\Form\View\Helper\RequiredMarkInFormLabel'
)
),

关于forms - 向 zf2 表单元素标签添加所需的后缀,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16260836/

25 4 0