CakePHP在使用FormHelper一年菜单时遇到问题

CakePHP在使用FormHelper一年菜单时遇到问题,cakephp,formhelper,Cakephp,Formhelper,蛋糕2.2.4 我有一个数据库sport\u year字段设置为year数据类型。 我尝试了两种方法来为我的添加/编辑视图创建年份菜单,但都有各自的问题 使用$this->Form->input: echo $this->Form->input('sport_year', array( 'type' => 'date', 'dateFormat' => 'Y', 'name' => 'data[Sport][sport_year]',

蛋糕2.2.4

我有一个数据库
sport\u year
字段设置为year数据类型。 我尝试了两种方法来为我的添加/编辑视图创建年份菜单,但都有各自的问题

使用
$this->Form->input

echo $this->Form->input('sport_year', array(
    'type' => 'date',
    'dateFormat' => 'Y',
    'name' => 'data[Sport][sport_year]',
    'minYear' => date('Y') - 2,
    'maxYear' => date('Y') + 1,
    'label' => 'Year',
    'empty' => '- select -'
));
代码可以很好地添加或编辑数据(验证也是如此),但是当到达编辑页面时,表单中的现有年份数据没有正确选择。数据数组确实显示
[sport_year]=>2012
,但菜单中未选择2012

echo $this->Form->year(
    'sport_year', 
    date('Y') - 2, 
    date('Y') + 1, 
    array(
        'name' => 'data[Sport][sport_year]', 
        'label' => 'Year', 
        'empty' => '- select -'
    )
);
year helper似乎可以正确地检索和选择现有数据,但标签不起作用,而且即使我的模型已设置了验证,它也不能按要求正确呈现字段。它仍然需要数据,但它会忽略我的模型自定义消息,并返回到控制器中的保存错误消息。

$this->Form->year()
将永远不会显示标签。只有
$this->Form->input()
添加标签,因为它是一种包装方法,
year()
用于创建年份字段

cake中的代码类似于:

public function input() {
    echo '<div>';
    echo $this->label(...);
    echo $this->year(...);
    echo '</div>';
}

$this->Form->year()
永远不会显示标签。只有
$this->Form->input()
添加标签,因为它是一种包装方法,
year()
用于创建年份字段

cake中的代码类似于:

public function input() {
    echo '<div>';
    echo $this->label(...);
    echo $this->year(...);
    echo '</div>';
}

对于选项1,请执行以下操作:

echo $this->Form->input('sport_year', array(
    ...
    'selected' => 'data[Sport][sport_year]'
));
对于选项1,请执行以下操作:

echo $this->Form->input('sport_year', array(
    ...
    'selected' => 'data[Sport][sport_year]'
));

谢谢,教条。我最终发现,在MySQL中,Cake似乎在年份字段格式上有问题。一旦我把它改到现在,你推荐的所有东西都很有魅力。谢谢,教条。我最终发现,在MySQL中,Cake似乎在年份字段格式上有问题。一旦我把它改成现在的样子,你推荐的所有东西都很有魅力。