【发布时间】:2014-04-15 17:52:27
【问题描述】:
我有一个简单的 zend framework 2 表单和输入过滤器。我试图弄清楚如何验证信用卡的到期年份和月份不会落入过去。您如何拥有一个需要两个字段来验证正确性的验证规则?
输入过滤器:
<?php
namespace Account\Form;
use Zend\InputFilter\InputFilter;
use Zend\Validator\CreditCard;
use Zend\Validator\Date;
class SuspendedPaymentFilter extends InputFilter
{
public function __construct()
{
$this->add(array(
'name' => 'expiration_month',
'required' => true,
'filters' => array(
array('name' => 'StripTags'),
array('name' => 'StringTrim'),
),
'validators' => array(
array('name' => 'not_empty'),
array(
'name' => 'date',
'options' => array(
'locale' => 'en',
'format' => 'm',
),
),
),
));
$this->add(array(
'name' => 'expiration_year',
'required' => true,
'filters' => array(
array('name' => 'StripTags'),
array('name' => 'StringTrim'),
),
'validators' => array(
array('name' => 'not_empty'),
array(
'name' => 'date',
'options' => array(
'locale' => 'en',
'format' => 'Y',
),
),
),
));
}
}
表格:
<?php
namespace Account\Form;
use Zend\Form\Form;
use Tools\Data\DateTime;
class PaymentForm extends Form
{
public function __construct($name = null)
{
parent::__construct('Payment');
$this->setAttribute('method', 'post');
$this->setAttribute('enctype','multipart/form-data');
$this->add(array(
'type' => 'Zend\Form\Element\Select',
'name' => 'expiration_month',
'attributes' => array(
'required' => 'required',
'class' => 'form-control',
),
'options' => array(
'label' => 'Expiration Month',
'value_options' => array(
'01' => 'January',
'02' => 'February',
'03' => 'March',
'04' => 'April',
'05' => 'May',
'06' => 'June',
'07' => 'July',
'08' => 'August',
'09' => 'September',
'10' => 'October',
'11' => 'November',
'12' => 'December',
),
),
));
$this->add(array(
'type' => 'Zend\Form\Element\Select',
'name' => 'expiration_year',
'attributes' => array(
'required' => 'required',
'class' => 'form-control',
),
'options' => array(
'label' => 'Expiration Year',
'value_options' => DateTime::returnXYears(10),
),
));
}
}
【问题讨论】:
标签: php validation zend-framework2