2012-04-28 7 views
0

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

// 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()いい方法は何ですか?

答えて

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'] 
    )); 
} 
+0

おかげでトン! – drewwyatt

関連する問題