2012-05-05 5 views
0

私はアイテムを持っています、目標はユーザーがアイテムを作成するときです私はアイテムを保存する際に電子メールアドレスの入力を求めます私は既に存在していないかどうかを確認しますバックグラウンドでデフォルト値の束を持つユーザーがアクティブにしたい場合、ユーザーはカムバックしてプロフィールを完成することができます。どのように私はモデルでそれを行うことができます。保存する唯一の方法は、配列を渡すことです。どのようにオブジェクトパラメータでそれを行うことができますか?cakephpオブジェクトをモデル内に保存するには

App::uses('User', 'Model'); 
class Item extends AppModel{ 
    public function save($data = null, $validate = true, $fieldList = array()) { 
    $user = User::getUserbyEmail($data['Item']['email_address']); 
    if($user){ 
     $user = new User(); 
     $user->firstName = "Bob"; 
     $user->save(); /// this save does not work 
    } 
    //get user Id and call parent save 
    ......... 
} 

class User extends AppModel { 
    public $firtName; 
    private $created; 
    private $status = 0; //0 is in active 
    $private $password; 

    public function __construct($id = false, $table = null, $ds = null) { 
    parent::__construct($id, $table, $ds); 
    $this->created = date("Y-m-d H:i:s"); 
    $this->setPassword($password); 
    } 

    public function setPassword($value){ 
    $this->password = mysecret_algorithm(standard_password); 
    } 

..bunch of setter and getter here 

} 

私は、CakePHPを使用していますが、私はその後、すべてのコントローラがちょうどます$ this-を呼び出すモデルでやっていいだろう、複数の場所で機能を項目に追加しているので、私は、コントローラでこれを行うにはしたくない>アイテム - > save();

答えて

1

コードでは、User::getUserbyEmailの目的は何ですか?ユーザーを保存するよう

、この試してみてください。

$userData = array(
    'firstname' => 'Bob' 
); 
:上記に

class Item extends AppModel{ 
    public function save($data = null, $validate = true, $fieldList = array()) { 
     $user = User::getUserbyEmail($data['Item']['email_address']); 
     if (!$user){ 
      $user = new User(); // EDIT: forgot this part 
      $user->create(); 
      $user->set($userData); 
      $user->save(); /// this save does not work 
     } 
    } 
    //get user Id and call parent save 
    ......... 
} 

$userDataは、配列のキーは、ユーザーのデータベーステーブル内のフィールドの名前です連想配列でなければなりません

この場合、コードは検証に合格する必要があります。

関連する問題