Как просмотреть обновление с помощью codeigniter, используя структуру mvc? - PullRequest
0 голосов
/ 27 ноября 2018

Я новичок в Codeigniter, но не в рамках MVC.Я получил представление, где он показывает список претендентов.Я хочу обновить заявителя.Когда я нажимаю кнопку обновления в строке кандидатов или просто нажимаю на статус (используя тег).

Цель состоит в том, чтобы обновить только статус кандидатов (не установлен, пройден, не выполнен и т. Д.).Я могу работать с новыми кодами и функциями, если мои коды не могут быть поняты.

**** модель **** "название модели = activefile.php"

function updateApplicant($id, $fname, $mname, $lname, $gender, $bday, $num, $addr, $school, $crs, $srcstrat, $psdate, $psstatus, $date) {

    //  $datetime->format('Y-m-d H:i:s');
    $data = array(
        'fname' => $fname,
        'mname' => $mname,
        'lname' => $lname,
        'gender' => $gender,
        'birthday' => $bday,
        'contactno' => $num,
        'address' => $addr,
        'institution' => $school,
        'course' => $crs,
        'src_strat' => $srcstrat,
        'exam_date' => $date,
        'ps_date' => $psdate,
        'ps_status' => $psstatus,
    );

    $this->hrrecdb->select('*', 'activefile');
    $this->hrrecdb->where('active_file_id', $id);
    $this->hrrecdb->update('active_file ', $data);

}

**** контроллер **** "имя контроллера = hrrecruitment.php"

public function updateApplicant($id) {

    $fname = $this->input->post('fn');
    $mname = $this->input->post('mn');
    $lname = $this->input->post('ln');
    $gender = $this->input->post('gender');
    $bday = $this->input->post('bday');
    $num = $this->input->post('num');
    $addr = $this->input->post('addr');
    $school = $this->input->post('school');
    $crs = $this->input->post('crs');


    if ($this->input->post('srcstrat') == 'emprefopt') {
        if ($this->input->post('empref_autocomplete_label') && $this->input->post('empref')) {
            $srcstrat = 'empref_' . $this->input->post('empref');
        } else {
            $srcstrat = 'empref_' . $this->input->post('emprefhid');
        }
    } else if ($this->input->post('srcstrat') == 'others') {
        $srcstrat = 'others_' . $this->input->post('others');
    } else {
        $srcstrat = $this->input->post('srcstrat');
    }

    $psdate = $this->input->post('psdatehid');
    $psstatus = $this->input->post('psstatus');

    if ($psstatus != 'Not Set' && $psdate == '0000-00-00') {
        $psdate = date('Y-m-d');
    }
    $date = $this->input->post('exam');

    if ($date != '0000-00-00' && $date) {
        $this->add_recruitment($id, $date);
    }

    if ($this->input->post('pscheck') == 'changed') {
        $this->Activefile->updateHistory($id, $this->user->get_fullName());
    }
    $this->Activefile->updateApplicant($id, $fname, $mname, $lname, $gender, $bday, $num, $addr, $school, $crs, $srcstrat, $psdate, $psstatus, $date);

    redirect(base_url() . 'hrrecruitment/applicants/all');
    $this->edit_info($id);
}

1 Ответ

0 голосов
/ 27 ноября 2018

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

$this->hrrecdb->select('*', 'activefile');
$this->hrrecdb->where('active_file_id', $id);
$this->hrrecdb->update('active_file ', $data);

Первая строка не важна для того, что вы делаете.Вызов select для, ну ... выбора данных.Удалите эту строку.

Вторую и третью строки можно выполнить одним вызовом

$this->hrrecdb->update('active_file ', $data, array('active_file_id' => $id));

Функция update принимает третий аргумент - предложение WHERE.Итак, аргумент array('active_file_id' => $id) говорит то же самое, что и $this->hrrecdb->where('active_file_id', $id); Меньше печатать - это хорошо, да?

В конце у контроллера есть одна очевидная проблема.

redirect(base_url() . 'hrrecruitment/applicants/all');
$this->edit_info($id);

Последняя строка никогда не будет вызвана, потому что функция redirect не возвращается.Вместо этого он отправляет браузер на новую страницу, и выполнение скрипта заканчивается.Непонятно, чего вы пытаетесь достичь с помощью вызова $this->edit_info($id), но он никогда не будет запущен.

Совет 1: функция base_url() может принимать сегменты URI.Итак, используйте это следующим образом.

base_url('hrrecruitment/applicants/all')

Совет 2. Функция redirect() определит для вас base_url, поэтому все, что вам действительно нужно, это

redirect('hrrecruitment/applicants/all');

Совет 3: Когда вы снова и снова пишете один и тот же вызов, перехватите возврат и используйте его вместо этого.Например:

$srcstrat = $this->input->post('srcstrat');
if($srcstrat == 'emprefopt')
{
    if($this->input->post('empref_autocomplete_label') && $this->input->post('empref'))
    {
        $srcstrat = 'empref_'.$this->input->post('empref');
    }
    else
    {
        $srcstrat = 'empref_'.$this->input->post('emprefhid');
    }
}
elseif($srcstrat == 'others')
{
    $srcstrat = 'others_'.$this->input->post('others');
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...