CakePHP: разрешение пользователю зарегистрироваться на курс - PullRequest
0 голосов
/ 23 февраля 2012

Я пытаюсь узнать, может ли пользователь записаться на курс.У меня есть 2 вопроса:

  1. Правильно ли я это делаю?
  2. Функция моего ученика :: 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());
}

1 Ответ

0 голосов
/ 23 февраля 2012

Внутри вашей модели вы имеете в виду модель.Вам нужно только указать $ this, а не $ this-> Student.

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

должно быть

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

UPDATE

Evenхуже того, вы не можете перегружать модель другой моделью, подобной этой.Вы не можете вызвать модель из другой модели без ее создания.Вы должны добавить это перед ссылкой на модель ученика:

App :: использовании ('Студент', 'Модель');$ student = new Student ();$ student-> id = $ student_id;

Однако дизайн ваших функций должен быть обновлен.Вы, вероятно, должны передать идентификатор студента и идентификатор курса на $this->Student->isSignedUpForCourse();.То, как вы сейчас это делаете, делает код трудным для чтения и понимания.Я бы изменил функцию isSignedUpForCourse следующим образом:

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

Не зная отношений между курсом / студентом (хотя я бы предположил, что это HABTM), я не могу предоставить правильный код обнаружения курса / студента.Но я думаю, вы поняли.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...