I'm creating a form in a ZF2 site, where i already solved many problems here:
Zend Framework 2 - Submitting a form (see there to find the code as well).
Now i have another problem: in my controller, form->isValid()
returns true no matter what. My goal is to have a validation through PHP, then tell the user if everything is good or not via Ajax. I suppose something went wrong with my InputFilter or it's not properly attached to my form.
Any suggestions? Thanks in advance.
Zend Framework 2 - 编写和设置一个好的InputFilter
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
1条回答 默认 最新
- duanchuopi2298 2015-06-24 08:07关注
Solved this one as well. Putting all validators in the same class as the form did the job; this was a mix of (poor) official docs and some forum topics here and somewhere else. Form class now looks this way:
<?php namespace Site\Form; use Zend\Form\Form; use Zend\Form\Element; use Zend\InputFilter\Input; use Zend\InputFilter\InputFilter; use Zend\Validator; class ContactForm extends Form { public function __construct($name=null, $options=array ()) { parent::__construct ($name, $options); $this->setAttributes(array( "action" => "./", )); $nameInput = new Element\Text("nome"); $nameInput->setAttributes(array( "placeholder" => "Nome e cognome", "tabindex" => "1" )); $this->add($nameInput); $emailInput = new Element\Text("email"); $emailInput->setAttributes(array( "placeholder" => "Indirizzo e-mail", "tabindex" => "2" )); $this->add($emailInput); $phoneInput = new Element\Text("phone"); $phoneInput->setAttributes(array( "placeholder" => "Numero di telefono", "tabindex" => "3", )); $this->add($phoneInput); $messageArea = new Element\Textarea("messaggio"); $messageArea->setAttributes(array( "placeholder" => "Scrivi il tuo messaggio", "tabindex" => "4" )); $this->add($messageArea); $submitButton = new Element\Button("submit"); $submitButton ->setLabel("Invia messaggio") ->setAttributes(array( "type" => "submit" )); $this->add($submitButton); $resetButton = new Element\Button("reset"); $resetButton ->setLabel("Cancella") ->setAttributes(array( "type" => "reset" )); $this->add($resetButton); $inputFilter = new InputFilter(); $nome = new Input("nome"); $nome->getValidatorChain() ->attach(new Validator\StringLength(3)); $email = new Input("email"); $email->getValidatorChain() ->attach(new Validator\EmailAddress()); $phone = new Input("phone"); $phone->getValidatorChain() ->attach(new Validator\Digits()); $message = new Input("messaggio"); $message->getValidatorChain() ->attach(new Validator\StringLength(10)); $inputFilter->add($nome) ->add($email) ->add($phone) ->add($message); $this->setInputFilter($inputFilter); } } ?>
I'll try factories later, but for now, this works.
解决 无用评论 打赏 举报
悬赏问题
- ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
- ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
- ¥16 mybatis的代理对象无法通过@Autowired装填
- ¥15 可见光定位matlab仿真
- ¥15 arduino 四自由度机械臂
- ¥15 wordpress 产品图片 GIF 没法显示
- ¥15 求三国群英传pl国战时间的修改方法
- ¥15 matlab代码代写,需写出详细代码,代价私
- ¥15 ROS系统搭建请教(跨境电商用途)
- ¥15 AIC3204的示例代码有吗,想用AIC3204测量血氧,找不到相关的代码。