0

私は次のものを持っています:

ユーザー

グループ

グループ テーブルには、次の 3 つのグループがあります。

従業員、クライアント、およびテストグループ

新しいユーザーを追加しようとすると、次のフォームを使用します。

ここに画像の説明を入力

このフォームからわかるように、Add user コントローラーはすべてのグループを登録します!

ただし、新しいユーザーを追加すると、ユーザーはユーザーテーブルに挿入されますが、グループ ID は null です:

ここに画像の説明を入力

私の Aros では、parent_id も null です。

これが私のユーザーモデルです:

    class User extends AppModel {
    public $belongsTo = array('Group');
    public $actsAs = array('Acl' => array('type' => 'requester'));

    function parentNode(){
        if (!$this->id) {
            return null;
        }
        $data = $this->read();
        if (!$data['User']['group_id']){
            return null;
        } else {
            return array('model' => 'Group', 'foreign_key' => $data['User']['group_id']);
        }
    }

    public function bindNode($user) {
        return array('model' => 'Group', 'foreign_key' => $user['User']['group_id']);
    }
// ...

    public function beforeSave($options = array()) {
        if (isset($this->data[$this->alias]['password'])) {
            $this->data[$this->alias]['password'] = AuthComponent::password($this->data[$this->alias]['password']);
        }
        return true;
    }
}

そして、これは私のユーザーコントローラーです:

App::uses('Security', 'Utility');

class UsersController extends AppController {

public $components = array(
    'Cookie',
    'BloglicHelper',
    'Session',
    'HasOffers',
    'RequestHandler'
);

function beforeFilter() {
    $this->Auth->allow('add', 'index', 'login','logout');
}

function add() {
    if (!empty($this->data)) {
        $this->User->create();
        if ($this->User->saveAll($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));
        }
    }
    $groups = $this->User->Group->find('list');
    $this->set(compact('groups'));
}

誰が私が間違っているのか教えてもらえますか

更新 フォームからデータを印刷しようとすると、次のようになります。

Array ( [User] => Array ( [username] => root [password] => admin ) [group_id] => 1 ) 

どちらが正しい。

4

1 に答える 1

1

ビュー、おそらくフォームが間違っていることを確認してください。debug $ this-> を実行すると、データは次のように回答されます。

Array ( 
      [User] => Array 
             ( 
               [username] => root 
               [password] => admin 
               [group_id] => 1 
             ) 
       )
于 2013-08-13T20:54:48.457 に答える