2009-04-13 43 views
0

我正在使用cakePHP,並且想要向用戶表中添加名和姓列,但是當我通過字段值firstname & lastname時,列始終保留爲空,而默認字段填充正常。我可以在CakePHP的用戶表上添加其他字段並仍然使用內置的auth方法嗎?

是否有可能做到這一點,或者我是否需要第二個表來存儲這些值?

更新代碼:

登記表user_controller.php

 <?php 
    $session->flash('register'); 
    echo $form->create('User', array('action' => 'register/')); 
    echo '<h3>Register</h3>'; 
    echo $form->input('firstname', array('label'=>'First Name')); 
    echo $form->input('lastname', array('label'=>'Last Name')); 
    echo $form->input('username'); 
    echo $form->input('email'); 
    echo '<input class="submitimg" type="image" src="' . $basepath . 'img/btn_submit.gif" alt="Submit" />'; 
    echo $form->end(); 
    ?> 

註冊行動

function register() { 
    if (!empty($this->data)) { 

     $password = $this->str_makerand(8,10); 
     $this->data['User']['password'] = $this->Auth->password($password); 

     $this->User->create(); 
     $result = $this->User->save($this->data); 

     if ($result) { 
      $this->Session->setFlash('Registration complete, an email will be sent with your password', 'default', array(), 'register'); 
      $this->sendNewUserMail($this->data['User']['username'], $this->data['User']['email'], $password); 
     } else {    
      $this->Session->setFlash('That username or email address is already taken, please try again', 'default', array(), 'register'); 
     }   
    } 
    $this->redirect(array('controller' => 'properties', 'action' => 'index')); 
} 

MySQL用戶表:

CREATE TABLE users (
    id int(11) NOT NULL AUTO_INCREMENT, 
    username char(50) DEFAULT NULL, 
    firstname varchar(100) NOT NULL, 
    lastname varchar(100) NOT NULL, 
    password char(50) DEFAULT NULL, 
    email varchar(100) NOT NULL, 
    created datetime NOT NULL, 
    PRIMARY KEY (id), 
    UNIQUE KEY email (email), 
    UNIQUE KEY username (username) 
) 

感謝您的幫助

回答

2

您的用戶表格中絕對可以有其他字段。 Auth組件只會對該表中的用戶名和密碼字段進行授權。事實上,如果您閱讀Auth組件的屬性,您會發現可以設置Cake將用作用戶/傳遞字段的字段。

聽起來像你的問題是一個錯誤。請張貼一些代碼和數據庫模式,我會看看來幫助你進一步。

0

在這樣的情況下,認爲最佳做法是將單獨的錶鏈接到包含所有您想保留的額外信息的用戶表。

0

這是我的用戶表:

CREATE TABLE `cake_users` (
    `id` int(11) unsigned NOT NULL auto_increment, 
    `username` varchar(100) default NULL, 
    `password` varchar(100) default NULL, 
    `email` varchar(150) default NULL, 
    `firstname` varchar(60) default NULL, 
    `lastname` varchar(60) default NULL, 
    `priv` int(4) default '0', 
    PRIMARY KEY (`id`) 
); 

我沒有公開用戶註冊,但我可以創建一個附加字段的用戶。這是我在控制器中使用的代碼:

function admin_add() { 
    if (!empty($this->data)) { 
     $this->User->create(); 
     $this->set('password',$this->Auth->password($this->data['User']['password'])); 
     if ($this->User->save($this->data)) { 
      $this->Session->setFlash(__('The User has been saved', true)); 
      $this->redirect(array('action'=>'index')); 
     } else { 
      $this->Session->setFlash(__('The User could not be saved. Please, try again.', true)); 
     } 
    } 
} 
0

額外的字段,或課程,可能和正常的。您的代碼中可能存在隱藏的錯誤。

您是否在發佈帖子後嘗試調試/輸出$this->data?您的名字/姓氏值是否顯示在數組中?你的模型中是否有列白名單/黑名單,以防止這些字段被保存?輸入字段在輸出HTML中如何顯示?他們應該被命名爲data[User][firstname],如果他們不是,那麼可怕的是......

相關問題