2012-02-23 9 views
0

ユーザーがコースに登録できるかどうかを確認しようとしています。私は2つの質問を持っています:CakePHP:ユーザーがAコースに登録できるようにする

  1. 私はこれについて正しい方向に行きますか?
  2. student :: isSignedUpForCourse()関数が適切なコースを返さない(実際には2つのコースを返す)。コースモデルで使用されているコース(Course :: CanSignupForCourse)を送信するにはどうすればよいですか?

ありがとう!

// Course Model 
public function isComplete() { 
    $course = $this->read(null); 

    if($course['Course']['completed'] != 0) { 
      return true; 
    } 

    return false; 
} 

public function canSignupForCourse($studentId) { 
    $this->Student->id = $studentId; 

    if (!$this->Student->exists()) { 
      throw new NotFoundException(__('Invalid student')); 
    }    

    $this->Student->isSignedUpForCourse(); 
    //this will ultimately be: 
    //if(! $this->Student->isSignedUpForCourse && $this->isApproved()) { 
     // return 
    } 
} 

// Course Controller: 
public function signup($id = null) { 
    $this->Course->id = $id; 
    if (!$this->Course->exists()) { 
      throw new NotFoundException(__('Invalid course')); 
    }    

    if($this->Course->canSignupForCourse($this->Auth->user('id'))) { 
      // can signup 
    } 
} 

// Student Model 
public function isSignedUpForCourse() { 
    print_r($this->read()); 
} 

答えて

0

モデルの中にモデルを参照しています。あなたは$ this-> Studentではなく、$ thisを参照する必要があります。

public function canSignupForCourse($studentId) { 
    $this->Student->id = $studentId; 

はさらに悪い

public function canSignupForCourse($studentId) { 
    $this->id = $studentId; 

UPDATE

する必要があり、あなたはそのような別のモデルを使用したモデルをオーバーロードすることはできません。モデルをインスタンス化せずに別のモデルの中からモデルを呼び出すことはできません。 Student Modelを参照する前に、これを追加する必要があります。

App :: uses( 'Student'、 'Model'); $ student = new Student(); $ student-> id = $ student_id;

ただし、機能のデザインを更新する必要があります。学生IDとコースIDを$this->Student->isSignedUpForCourse();に渡す必要があります。あなたが持っている方法は、コードを読んで理解することを難しくしています。 (私はそれがHABTMであると仮定しますが)、私は適切なコース/学生の検出コードを提供することはできませんもちろん/学生との関係を知ってして

public function isSignedUpForCourse($student_id = null, $course_id = null) { 
    if (!$student_id or !$course_id) { 
     return false; 
    } 
    // access the model to determine course/student 
} 

:私はこれにisSignedUpForCourse機能を変更することになります。しかし、私はあなたがポイントを得ると思う。

+0

これはコースモデルです。 – execv

+0

上記の私の更新を参照してください。 –

関連する問題