年下拉列表存储为null

时间:2012-03-09 03:33:07

标签: php cakephp

我想不出一个体面的头衔 - 希望它足够清楚。 是的,我最初在注册表单中创建年份下拉选择器时出现问题 - 现在可以正常工作,但即使选择一年(我已将此作为注册的可选项),存储在数据库中的值仍为空。

以下是代码:

echo $this->Form->input('graduation1', array('label' => 'Year of Graduation:',
                                                             'type' => 'date',
                                                             'dateFormat' => 'Y',
                                                             'empty' => true,
                                                             'minYear' => 1960, // start year
                                                             'maxYear' => date('Y') // current 
                                                            )
                                      ); 

感谢社区提前提供帮助!

控制器代码:

function register() {
            $this->layout = 'login';
            $this->set('title_for_layout', 'Member Registration');
            if(!empty($this->data)) {
                      $this->data['User']['group_id'] = 4;
                      $this->User->create();
                         if($this->User->save($this->data)) {
                            $this->set('user', $this->data['User']['id']);
                            $this->_sendEmail('register', 'A new registration has been submitted', 'blah@blah.com');
                            $this->redirect(array('action' => 'approval'));
                        } else {
                            unset($this->data['User']['password']);
                            unset($this->data['User']['password_confirm']);
                    $this->Session->setFlash(__('There were errors found in your registration.  Please check the highlighted fields', true));
                    }
            }               
        }

HTMl输出:

<div id="grad">
        <label>Year of Graduation:</label>
        <select name="data[User][graduation1][year]" id="UserGraduation1Year">
<option value=""></option>
<option value="2012">2012</option>
<option value="2011">2011</option>
<option value="2010">2010</option>
<option value="2009">2009</option>
<option value="2008">2008</option>
<option value="2007">2007</option>
<option value="2006">2006</option>
<option value="2005">2005</option>
<option value="2004">2004</option>
<option value="2003">2003</option>
<option value="2002">2002</option>
<option value="2001">2001</option>
<option value="2000">2000</option>
<option value="1999">1999</option>
<option value="1998">1998</option>
<option value="1997">1997</option>
<option value="1996">1996</option>
<option value="1995">1995</option>
<option value="1994">1994</option>
<option value="1993">1993</option>
<option value="1992">1992</option>
<option value="1991">1991</option>
<option value="1990">1990</option>
<option value="1989">1989</option>
<option value="1988">1988</option>
<option value="1987">1987</option>
<option value="1986">1986</option>
<option value="1985">1985</option>
<option value="1984">1984</option>
<option value="1983">1983</option>
<option value="1982">1982</option>
<option value="1981">1981</option>
<option value="1980">1980</option>
<option value="1979">1979</option>
<option value="1978">1978</option>
<option value="1977">1977</option>
<option value="1976">1976</option>
<option value="1975">1975</option>
<option value="1974">1974</option>
<option value="1973">1973</option>
<option value="1972">1972</option>
<option value="1971">1971</option>
<option value="1970">1970</option>
<option value="1969">1969</option>
<option value="1968">1968</option>
<option value="1967">1967</option>
<option value="1966">1966</option>
<option value="1965">1965</option>
<option value="1964">1964</option>
<option value="1963">1963</option>
<option value="1962">1962</option>
<option value="1961">1961</option>
<option value="1960">1960</option>
</select>        </div>

1 个答案:

答案 0 :(得分:1)

$this->User->create()之前,请尝试var_dump($this->data)以确保graduation1确实获得了POST,如果确实如此,请确保您的表中的字段被调用graduation1 < / p>

- 编辑 -

如果您只想存储一个整数(一年),只需使用int作为字段数据类型而不是日期

- EDIT2 - 不确定为什么cakephp会生成name="data[User][graduation1][year]"尝试

$yearRanges = range(1960, date("Y"));
echo $this->Form->input('User.graduation1', array('label' => 'Year of Graduation:',
                                                             'type' => 'select',
                                                             'options' => array_combine($yearRanges, $yearRanges),
                                                             'empty' => true
                                                            )
                                      );