CakePHP表单帮助日期字段,但仅在月份上使用选择。允许日期和年份为文本字段

时间:2013-01-30 07:49:28

标签: cakephp cakephp-2.0

我正在尝试使用cakephp日期字段将月份作为选择输出,将年份作为文本字段输出而不是作为选择字段输出。

以下是我认为输出日期类型字段的传统Cake方式都是选择(我将dateFormat属性添加到当前只显示2个选择框(跳过当天)):

<?php echo $this->Form->input('Payment.credit_card_expiration', array('type' => 'date', 'label' => 'Expiration date', 'dateFormat' => 'MY')) ?>

我暂时做的是我认为是一种黑客攻击,即将其分成两个区域。我不喜欢它,因为它没有显示该字段的验证错误(主要问题),它看起来像丑陋的代码(为什么写丑陋的代码,特别是如果蛋糕有办法做到这一点)。

<?php
echo $this->Form->input('Payment.credit_card_expiration.month', array('type' => 'select', 'label' => 'Expiration date', 'options' => array('Month','Jan','Feb','...')));
echo $this->Form->input('Payment.credit_card_expiration.year', array('type' => 'text', 'label' => '&nbsp;', 'placeholder' => 'Year'));

if(isset($this->validationErrors['Payment']['credit_card_expiration'])) {
    echo '<div class="error-message">' . $this->validationErrors['Payment']['credit_card_expiration'][0] . '</div>';
    echo '<div class="row"><div class="span5">&nbsp;</div></div>';
}
?>

作为一个说明,我想到可能需要扩展FormHelper。我之前没有这样做过,但我相信我能做到。我只是想知道是否有内置方式或优雅黑客。

这是我在StackOverflow上的第一篇文章,所以我们走了,我会看看会发生什么。感谢您的任何想法或见解,非常感谢。

谢谢!

1 个答案:

答案 0 :(得分:0)

CakePHP FormHelper说你可以使用$this->Form->month()作为