Обновление учебника библиотеки календарей Codeigniter - PullRequest
0 голосов
/ 13 декабря 2011

следующие вместе с: CodeIgniter с нуля: Библиотека календаря

Код из более ранней версии:

   class Mycal extends CI_Controller
{

    function display($month, $year) {

        $conf = array(
            'start_day' => 'Monday',
            'show_next_prev' => true,
            'next_prev_url' => base_url() . 'mycal/display'
        );

        $this->load->library('calendar', $conf);

       print $this->calendar->generate($month, $year);  

    }
 }

генерирует эти ошибки:

Обнаружена ошибка PHP

Серьезность: Предупреждение

Сообщение: отсутствует аргумент 1 для Mycal :: display ()

Имя файла: controllers / mycal.php

Номер строки: 4 Обнаружена ошибка PHP

Серьезность: Предупреждение

Сообщение: отсутствует аргумент 2 для Mycal :: display ()

Имя файла: controllers / mycal.php

Номер строки: 4 Обнаружена ошибка PHP

Уровень важности: Уведомление

Сообщение: неопределенная переменная: год

Имя файла: controllers / mycal.php

Номер строки: 16 Обнаружена ошибка PHP

Серьезность: Уведомление

Сообщение: неопределенная переменная: month

Имя файла: controllers / mycal.php

Номер строки: 16

Я обновил следующее:

class Mycal extends CI_Controller {

    function display($year = null, $month = null) {

        $year = $this->uri->segment(3);
        $month = $this->uri->segment(4);

        $conf = array(
            'start_day' => 'Monday',
            'show_next_prev' => true,
            'next_prev_url' => base_url() . 'mycal/display/'
        );

        $this->load->library('calendar', $conf);
        print $this->calendar->generate($year, $month);
    }

}

Работает как нужно, но следует ли рекомендациям по КИ?

Ответы [ 2 ]

1 голос
/ 13 декабря 2011

Опираясь на ответ Ракеты, вам нужно установить год и месяц, если они не были переданы в URL.

Используя $year = null, $month = null в качестве параметров, это означает, что если параметры не переданы, $ год будет равен нулю, а $ месяц будет равен нулю, но если параметры передаются в URL, $ год будет равен первому параметру, а $ месяц будет равен следующему параметру.

function display($year = null, $month = null) {

    $year = ($year == null) ? date('Y') : $year;
    $month = ($month == null) ? date('n') : $month;

    $conf = array(
        'start_day' => 'Monday',
        'show_next_prev' => true,
        'next_prev_url' => base_url() . 'mycal/display/'
    );

    $this->load->library('calendar', $conf);
    echo $this->calendar->generate($year, $month);
}
1 голос
/ 13 декабря 2011

Когда вызывается функция display, для $year и $month будут установлены сегменты URI (или ноль) для вас. Вызов $this->uri->segment здесь не нужен.

Также echo немного быстрее, чем print ( в соответствии с этим ).

function display($year = null, $month = null) {
    $conf = array(
        'start_day' => 'Monday',
        'show_next_prev' => true,
        'next_prev_url' => base_url() . 'mycal/display/'
    );

    $this->load->library('calendar', $conf);
    echo $this->calendar->generate($year, $month);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...