PHP主|设置zend_form_element的自定义错误消息
钥匙要点
- >基于Zend Framework创建非英语网站或应用程序时,开发人员经常在标记Zend_form的字段(是Zend_form_element)中遇到的努力,为无效和显示自定义错误消息。这主要是由于zend_form_element类的本机反直觉方法。
- >由美国公司Zend拥有的Zend Framework的默认行为是为用户输入破坏的每个验证器以英语显示错误消息。开发人员可以转换框架的每个错误消息,也可以在一个或多个消息中解释输入无效,并显示建议以插入可接受的值。后一种选择不那么复杂,尤其是对于中小型项目。 >解决此问题的解决方案在于形式(init(init()方法)内部的字段和seterRormessages()方法的使用与Zend框架验证器的属性,称为BreakChainonFailure()。此属性允许验证过程在第一个失败条件下停止。这种方法允许该表单在无效输入时仅显示自定义消息。
开发一个示例
假设您有一个具有不同字段的表格,并且仅考虑其中一个字段,例如用于让用户输入他的名称的文本输入字段。您可以使用的验证器是不同的,但是为了示例,我们将限制名称的长度,并且仅允许字母字符和空格。说Zend Framework语言,我们将分别使用Zend_validate_stringlength和zend_validate_alpha类。 您可能已经知道,Zend Framework归American Company Zend拥有,因此它显示的所有消息都是英文。框架的默认行为是为用户输入破坏的每个验证器显示一个或多个错误消息。因此,对于那些正在构建非英语网站的人,有两个选项可以让所有用户可读取消息:翻译框架的每个错误消息,或在一条或多个消息中解释输入是无效的,并显示建议的建议可以插入公认的价值。第一个选择是过于复杂的,尤其是对于中小型项目,因此我将展示如何使用第二种选项。 为了简化它,我们将设置一个自定义消息:“输入是无效的。该值必须只有字母字符和空格,其长度必须在3到50个字符之间。”代码
我将展示我们将在文章中使用的代码。首先,这是包含名称的输入字段和检查数据所需的验证器的表单。<span><span><?php </span></span><span><span>class Application_Form_User extends Zend_Form </span></span><span><span>{ </span></span><span> <span>public function init() { </span></span><span> <span>// create the field </span></span><span> <span>$element = new Zend_Form_Element_Text("name"); </span></span><span> <span>$element->setLabel("Name"); </span></span><span> </span><span> <span>// set the validators </span></span><span> <span>$element->setValidators(array( </span></span><span> <span>new Zend_Validate_Alpha(true), </span></span><span> <span>new Zend_Validate_StringLength( </span></span><span> <span>array("min" => 3, "max" => 50)) </span></span><span> <span>)); </span></span><span> <span>$element->setRequired(); </span></span><span> </span><span> <span>// add the element to the form </span></span><span> <span>$this->addElement($element); </span></span><span> </span><span> <span>// add a submit button </span></span><span> <span>$element = new Zend_Form_Element_Submit("submit"); </span></span><span> <span>$element->setLabel("Submit"); </span></span><span> <span>$this->addElement($element); </span></span><span> <span>} </span></span><span><span>}</span></span>
<span><span><?php </span></span><span><span>class IndexController extends Zend_Controller_Action </span></span><span><span>{ </span></span><span> <span>public function init() { </span></span><span> <span>} </span></span><span> </span><span> <span>public function indexAction() { </span></span><span> <span>$form = new Application_Form_User(); </span></span><span> </span><span> <span>if ($this->getRequest()->isPost() && </span></span><span> <span>$form->isValid($this->getRequest()->getPost())) { </span></span><span> <span>$this->view->message = "Valid input"; </span></span><span> <span>} </span></span><span> <span>else { </span></span><span> <span>$this->view->form = $form; </span></span><span> <span>} </span></span><span> <span>} </span></span><span><span>}</span></span>
<span><span><?php </span></span><span><span>if (isset($this->message)) { </span></span><span> <span>echo $this->message; </span></span><span><span>} </span></span><span><span>if (isset($this->form)) { </span></span><span> <span>echo $this->form; </span></span><span><span>}</span></span>
分析框架的方法
一个很好的问题是,是否已经可以面对这种情况了。答案是几乎 。我的意思是有一些方法,但它们并不总是按照您的期望(至少如我所期望的)工作。管理错误消息的方法是:- > setErrors(数组$消息)
- > seterRormessages(数组$消息)
<span><span><?php </span></span><span><span>class Application_Form_User extends Zend_Form </span></span><span><span>{ </span></span><span> <span>public function init() { </span></span><span> <span>// create the field </span></span><span> <span>$element = new Zend_Form_Element_Text("name"); </span></span><span> <span>$element->setLabel("Name"); </span></span><span> </span><span> <span>// set the validators </span></span><span> <span>$element->setValidators(array( </span></span><span> <span>new Zend_Validate_Alpha(true), </span></span><span> <span>new Zend_Validate_StringLength( </span></span><span> <span>array("min" => 3, "max" => 50)) </span></span><span> <span>)); </span></span><span> <span>$element->setRequired(); </span></span><span> </span><span> <span>// add the element to the form </span></span><span> <span>$this->addElement($element); </span></span><span> </span><span> <span>// add a submit button </span></span><span> <span>$element = new Zend_Form_Element_Submit("submit"); </span></span><span> <span>$element->setLabel("Submit"); </span></span><span> <span>$this->addElement($element); </span></span><span> <span>} </span></span><span><span>}</span></span>
<span><span><?php </span></span><span><span>class IndexController extends Zend_Controller_Action </span></span><span><span>{ </span></span><span> <span>public function init() { </span></span><span> <span>} </span></span><span> </span><span> <span>public function indexAction() { </span></span><span> <span>$form = new Application_Form_User(); </span></span><span> </span><span> <span>if ($this->getRequest()->isPost() && </span></span><span> <span>$form->isValid($this->getRequest()->getPost())) { </span></span><span> <span>$this->view->message = "Valid input"; </span></span><span> <span>} </span></span><span> <span>else { </span></span><span> <span>$this->view->form = $form; </span></span><span> <span>} </span></span><span> <span>} </span></span><span><span>}</span></span>
<span><span><?php </span></span><span><span>if (isset($this->message)) { </span></span><span> <span>echo $this->message; </span></span><span><span>} </span></span><span><span>if (isset($this->form)) { </span></span><span> <span>echo $this->form; </span></span><span><span>}</span></span>
<span><span><?php </span></span><span><span>// set the custom message in the case of an error </span></span><span><span>$element->setErrors(array("The input is invalid. The value must have only alphabetic characters and spaces and its length must be between 3 and 50 characters."));</span></span>
发现解决方案
现在,关键是要理解和>> 为了插入自定义消息,以便用户可以进行比较和有关接受哪些值的建议。毫无疑问,何时发生在表单内(init(init()方法)内部的字段以及如何归结为seterRormessages()方法的结合以及使用Zend Framework的属性,称为BreakChainonFailure() 。后者允许我们在第一个失败条件下停止验证过程。如果我们设置了五个验证器,但第一个验证器失败,则不会使用其他四个。 要利用此属性利用最少数量的代码行,我将在开始时说明的代码。我将添加到INIT()方法中使用SeterRormess()方法的代码行,并利用SetValidators()接受的可能的输入配置之一,该配置期望有一系列数组。主一个中包含的数组最多可以具有三个参数,其中包括:- >字符串(强制性)以将验证器指定为用户。
- >布尔值(默认情况下,其值为false),以指定框架是否必须在第一个失败时打破验证。因此,此参数设置了属性breakchainonfailure的价值,这将帮助我们实现目标。 每个选择的验证器
- >的选项数组(默认情况下,默认为空数组)都不同 使用要使用的每个验证器所使用的第二个参数是必不可少的。 根据我们到目前为止所看到的,由此产生的代码是:
<span><span><?php </span></span><span><span>class Application_Form_User extends Zend_Form </span></span><span><span>{ </span></span><span> <span>public function init() { </span></span><span> <span>// create the field </span></span><span> <span>$element = new Zend_Form_Element_Text("name"); </span></span><span> <span>$element->setLabel("Name"); </span></span><span> </span><span> <span>// set the validators </span></span><span> <span>$element->setValidators(array( </span></span><span> <span>new Zend_Validate_Alpha(true), </span></span><span> <span>new Zend_Validate_StringLength( </span></span><span> <span>array("min" => 3, "max" => 50)) </span></span><span> <span>)); </span></span><span> <span>$element->setRequired(); </span></span><span> </span><span> <span>// add the element to the form </span></span><span> <span>$this->addElement($element); </span></span><span> </span><span> <span>// add a submit button </span></span><span> <span>$element = new Zend_Form_Element_Submit("submit"); </span></span><span> <span>$element->setLabel("Submit"); </span></span><span> <span>$this->addElement($element); </span></span><span> <span>} </span></span><span><span>}</span></span>
使用上面的代码,该表格仅在无效输入时仅显示自定义消息……正是我们想要的!如果您需要使用更多消息,例如在几个阶段的建议中,只需在用于SeterRormessages()方法的数组中添加更多字符串即可。 通过fotolia
图像 在设置Zend表单元素的自定义错误消息时,经常询问的问题(常见问题解答) >如何在zend中自定义特定表单元素的错误消息?>自定义Zend中特定表单元素的错误消息非常简单。您可以使用setMessage()方法为特定验证器设置自定义错误消息。例如,如果您有一个名为“电子邮件”的表单元素,并且要为其设置自定义错误消息,则可以按以下方式进行:
$ email = new zend_form_element_text('email''); $ email--> setLabel('电子邮件地址')
- > addValidator('nocempty',true)
> - > addValidator('emailAddress');
$ email--> getValidator('nocementy') - > setMessage('请输入您的电子邮件地址');
在本示例中,setMessage()方法用于为“电子邮件”表单元素的“ notempty”验证器设置自定义错误消息。 zend?
>如果要在zend中为form元素设置多个自定义错误消息,则可以使用setMessages()方法。此方法接受错误消息数组。这是一个示例:
$ email = new zend_form_element_text('email');
- > - > addvalidator('notempty',true)
- > addValidator('emailAddress');$ email--> getValidator('notempty') - > setMessages(array(
zend_end_validate_notempty) :无效=>'请输入有效的电子邮件地址'
));
在此示例中,setMessages()方法用于为“电子邮件”表单元素的“无empppy”验证器设置多个自定义错误消息。
>当表单在zend中失败验证时如何显示自定义错误消息?
>当表单在zend中失败验证时,您可以使用adderror()方法显示自定义错误消息。此方法添加了一个错误消息,当表单失败验证时将显示。以下是一个示例:
$ form = new zend_form();
$ form-> addElement('text','email',array(
>'valiverators'=> array(
array('valiverator'=>> 'emailAddress','options'=> array('消息'=>'无效的电子邮件地址')
)
));
> if(!$ form- form-> isvalid($ _ post)){
$ form-> adderror('提交中有错误。请更正它们,然后重试。');
在此示例中, adderror()方法用于添加一个自定义错误消息,该消息将在表单失败验证时将显示。
>
>我如何更改zend中的默认错误消息?
$ email--> setlabel('email emeldlobel('email dorkation')
- > - > addvalidator('notempty',true)
- > addValidator('emailAddress');
$ email--> getValidator('notempty') - > setMessage('请输入您的电子邮件地址');
> $ emagevalidator('emailAddress'') - > setMessage('请输入有效的电子邮件地址');在本示例中,setMessage()方法用于更改默认错误消息的“ notempty”和“ emailAddress”'电子邮件'表单元素的验证器。
如何为zend element中需要的表单元素设置自定义错误消息?在Zend中需要,您可以使用SetRequired()和AdderRormessage()方法为其设置自定义错误消息。这是一个示例:
$ email = new zend_form_element_text('email');
> adderRormessage ('需要电子邮件');在本示例中,setRequired()方法用于使'电子邮件'表单元素需要,并且AdderRormessage()方法用于为其设置自定义错误消息。
>以上是PHP主|设置zend_form_element的自定义错误消息的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

JWT是一种基于JSON的开放标准,用于在各方之间安全地传输信息,主要用于身份验证和信息交换。1.JWT由Header、Payload和Signature三部分组成。2.JWT的工作原理包括生成JWT、验证JWT和解析Payload三个步骤。3.在PHP中使用JWT进行身份验证时,可以生成和验证JWT,并在高级用法中包含用户角色和权限信息。4.常见错误包括签名验证失败、令牌过期和Payload过大,调试技巧包括使用调试工具和日志记录。5.性能优化和最佳实践包括使用合适的签名算法、合理设置有效期、

会话劫持可以通过以下步骤实现:1.获取会话ID,2.使用会话ID,3.保持会话活跃。在PHP中防范会话劫持的方法包括:1.使用session_regenerate_id()函数重新生成会话ID,2.通过数据库存储会话数据,3.确保所有会话数据通过HTTPS传输。

SOLID原则在PHP开发中的应用包括:1.单一职责原则(SRP):每个类只负责一个功能。2.开闭原则(OCP):通过扩展而非修改实现变化。3.里氏替换原则(LSP):子类可替换基类而不影响程序正确性。4.接口隔离原则(ISP):使用细粒度接口避免依赖不使用的方法。5.依赖倒置原则(DIP):高低层次模块都依赖于抽象,通过依赖注入实现。

在PHPStorm中如何进行CLI模式的调试?在使用PHPStorm进行开发时,有时我们需要在命令行界面(CLI)模式下调试PHP�...

如何在系统重启后自动设置unixsocket的权限每次系统重启后,我们都需要执行以下命令来修改unixsocket的权限:sudo...

静态绑定(static::)在PHP中实现晚期静态绑定(LSB),允许在静态上下文中引用调用类而非定义类。1)解析过程在运行时进行,2)在继承关系中向上查找调用类,3)可能带来性能开销。
