Передача параметров в модель / табличную функцию - PullRequest
0 голосов
/ 05 февраля 2019

Я пытаюсь передать значение с именем schoolYear, которое сейчас равно 2019, скажем, или тому, что пользователь выберет на самом деле.Ниже выполняется, как только пользователь выбрал «отправить», и он выполнил запрос «если пост», затем переходит на контроллер редактирования через экран 2. на экране 2 у меня есть функция редактирования, в которую передается schoolYear, и эхо-сигнал, возвращающий 2019 правильное значение, которое я выбрал.Большой!Теперь я борюсь с передачей этого конкретного параметра в табличную функцию, чтобы его можно было использовать, как показано на рисунке.Может кто-то направить меня в правильном направлении, спасибо

Сейчас я не получаю сообщений об ошибках, но если я смотрю на передаваемый sql, он показывает FiscalYear = 0 в выполняемом sql, что означает $ schoolyearс моего контроллера не устанавливается

1 Ответ

0 голосов
/ 08 февраля 2019

Насколько я понимаю, вы пытаетесь получить школы в зависимости от того, в каком они году. Для этого сделайте следующее:

function edit($schoolYear) {
    $this->loadModel('MMSDvSchoolFromCalendar');
    $elementarySchools = $this->MMSDvSchoolFromCalendar->find('all', array('conditions' => array('MMSDvSchoolFromCalendar.FiscalYear' => $schoolYear)));
}

Однако, если вы пытаетесь выполнить запрос в вашем getSchoolsByLevelфункция, сделайте это:

function edit($schoolYear) {
    $this->loadModel('MMSDvSchoolFromCalendar');
    $code = $isSummerSchool = 0;
    $elementarySchools = $this->MMSDvSchoolFromCalendar->find('all', array('conditions' => array('FiscalYear' => $schoolYear, 'DistrictCode' => 'MA', 'summerSchool' => $isSummerSchool, 'SchoolCode LIKE' => $code)));
}

Если вы хотите разбить свою функцию, как в вашем примере, сделайте это:

function edit($schoolYear) {
    $this->loadModel('MMSDvSchoolFromCalendar');
    $elementarySchools = $this->_getSchoolsByLevel($schoolYear);
}

function _getSchoolsByLevel($schoolYear, string $code = '0', string $isSummerSchool = '0') {
    return $this->MMSDvSchoolFromCalendar->find('all', array('conditions' => array('FiscalYear' => $schoolYear, 'DistrictCode' => 'MA', 'summerSchool' => $isSummerSchool, 'SchoolCode LIKE' => $code)));
}

Примечания:

  1. Положить переменную $ использует = массив ('MMSDvSchoolFromCalendar');в верхней части вашего класса контроллера, так что вам не нужно продолжать загружать модель.

  2. Подчеркивание перед функцией обозначает частную функцию.Используйте это, чтобы пользователи не могли перейти на страницу MMSDvSchoolFromCalendar / getSchoolsByLevel.

...