对于Zend表单,如何将结束日期更新为自输入开始日期的开始日期后一天?

时间:2013-06-17 18:07:30

标签: php forms zend-framework

我在表单中有一个开始日期元素和结束日期元素。每个都使用日期选择器进行选择。我希望我的表单自动将表单的结束日期元素设置为选择开始日期后的一天(例如,如果我选择2013年7月10日,结束日期字段中的值应默认为7月2013年11月11日)。用户可以随时根据自己的意愿制作结束日期,但最初应该是第二天。

以下是表单的代码:

    // Element: start_date
    $start_date = new Zend_Form_Element_Text('start_date',
        array(
             'label' => 'Start date',
             'required' => false,
             'filters' => array('StringTrim', 'StripTags'),
             'class' => 'input-small datepicker',
             'decorators' => $customElementDecorators,
             'data-date' => date("Y-m-d"),
             'data-date-format' => 'yyyy-mm-dd',
             'value' => date("Y-m-d")
        )
    );

    // date validator
    $start_date->addValidator(new Zend_Validate_Date('Y-m-d'));

    $this->addElement($start_date);
    unset($start_date);

    // Element: end_date
    $end_date = new Zend_Form_Element_Text('end_date',
        array(
             'label' => 'End date',
             'required' => false,
             'filters' => array('StringTrim', 'StripTags'),
             'class' => 'input-small datepicker',
             'decorators' => $customElementDecorators,
             'data-date' => date("Y-m-d"),
             'data-date-format' => 'yyyy-mm-dd',
             'value' => date("Y-m-d")
        )
    );
    $this->addElement($end_date);
    unset($end_date);

提前致谢。

2 个答案:

答案 0 :(得分:1)

你绝对需要使用Javascript(或Jquery ......有一个很好的插件:http://trentrichardson.com/examples/timepicker/)在"实时"中执行此类操作。其他解决方案是在发布操作后检查日期并显示自定义错误消息。

答案 1 :(得分:0)

为end设置data-date属性时,为其赋值date("Y-m-d", strtotime("+1 day"));

$end_date = new Zend_Form_Element_Text('end_date',
    array(
         'label' => 'End date',
         'required' => false,
         'filters' => array('StringTrim', 'StripTags'),
         'class' => 'input-small datepicker',
         'decorators' => $customElementDecorators,
         'data-date' => date("Y-m-d", strtotime("+1 day")),
         'data-date-format' => 'yyyy-mm-dd',
         'value' => date("Y-m-d")
    )
);