0

beforeSave()ユーザーに一時的な顧​​客番号を割り当てるために使用しています。この値を API にアクセスするデバイスに返す必要があります。私のコントローラーからそれにアクセスすることは可能ですか?

// app/Model/User.php
<?php
class User extends AppModel {
    function beforeSave($options) {
        $this->data['User']['customerNumber'] = uniqid(); // This is the value I want
        $this->data['User']['password'] = md5($this->data['User']['password']);
    }

    function isUnique() {
        $users = $this->find('all', array('conditions' => array('email' => $this->data['User']['email'])));
        if (empty($users)) {
            return true;
        } else {
            return false;
        }
    }
}
?>

// app/Controller/UserController.php
<?php
class UserController extends AppController {
    public $components = array('RequestHandler');

    public function register() {
        if ($this->request->is('post')) {
            $this->User->set($this->data);
            if ($this->User->isUnique()) {
                if ($this->User->save($this->data)) {
                    // This is where I need to return the customer number
                    echo json_encode(array('status' => 'User registered', 'customerNumber' => $this->data['customerNumber']));
                } else {
                    echo json_encode(array('status' => 'User could not be registered'));
                }
            } else {
                echo json_encode(array('status' => 'user is duplicate'));
            }
        } else {
            echo json_encode(array('error' => 'Requests must be made using HTTP POST'));
        }
    }
}
?>

二次的な質問として、uniqid()一時的な顧​​客番号を割り当てる方法はありますか?

4

1 に答える 1

1

その値を直接取得することはできませんが、次のように、保存が成功した後すぐに取得できます。

if ($this->User->save($this->data)) {
    // Fetch inserted row
    $user = $this->User->findById($this->User->getInsertId());
    echo json_encode(array(
        'status' => 'User registered',
        'customerNumber' => $user['User']['customerNumber']
    ));
}
于 2012-04-28T20:25:21.640 に答える