Что вызывает ошибку «Отсутствует аргумент 2 для категорий :: posts ()»? - PullRequest
0 голосов
/ 06 октября 2019

Я работаю над небольшим приложением для блогов. Существует четкое разделение между его серверной и интерфейсной частью.

Серверная часть представляет собой API , выполненный с использованием Codeigniter 3, который выплевывает страницы, сообщения, нумерацию страниц и т. Д. .

В этом API в контроллере Posts используется _initPagination(), который используется на сайте:

private function _initPagination($path, $totalRows, $query_string_segment = 'page') {
//load and configure pagination 
    $this->load->library('pagination');
    $config['base_url'] = "http://".$_SERVER['HTTP_HOST'] . $path;
    $config['query_string_segment'] = $query_string_segment; 
    $config['enable_query_strings'] =TRUE;
    $config['reuse_query_string'] =TRUE;
    $config['total_rows'] = $totalRows;
    $config['per_page'] = 12;
    if (!isset($_GET[$config['query_string_segment']]) || $_GET[$config['query_string_segment']] < 1) {
        $_GET[$config['query_string_segment']] = 1;
    }
    $this->pagination->initialize($config);

    $limit = $config['per_page'];
    $offset = ($this->input->get($config['query_string_segment']) - 1) * $limit;

    return ['limit' => $limit, 'offset' => $offset];
}

Категории контроллер отображает, помимо прочего, пост по категориям :

public function posts($path, $category_id) {
    //load and configure pagination 
    $this->load->library('pagination');
    $config['base_url'] = "http://".$_SERVER['HTTP_HOST'] . $path;
    $config['base_url'] = base_url('/categories/posts/' . $category_id);
    $config['query_string_segment'] = 'page';
    $config['total_rows'] = $this->Posts_model->get_num_rows_by_category($category_id);
    $config['per_page'] = 12;

    if (!isset($_GET[$config['query_string_segment']]) || $_GET[$config['query_string_segment']] < 1) {
        $_GET[$config['query_string_segment']] = 1;
    }

    $limit = $config['per_page'];
    $offset = ($this->input->get($config['query_string_segment']) - 1) * $limit;
    $this->pagination->initialize($config);

    $data = $this->Static_model->get_static_data();
    $data['pagination'] = $this->pagination->create_links();
    $data['pages'] = $this->Pages_model->get_pages();
    $data['categories'] = $this->Categories_model->get_categories();
    $data['category_name'] = $this->Categories_model->get_category($category_id)->name;
    $data['posts'] = $this->Posts_model->get_posts_by_category($category_id, $limit, $offset);

    // All posts in a CATEGORY
    $this->output->set_content_type('application/json')->set_output(json_encode($data,JSON_PRETTY_PRINT));
}

В приведенном выше коде есть ошибка, причину которой я не могу найти. Сообщение об ошибке, которое выдает приложение:

Missing argument 2 for Categories::posts() 

Где моя ошибка?

1 Ответ

0 голосов
/ 06 октября 2019

Это означает, что вы передали 1 аргумент вместо 2 этому методу. Отправьте туда $path и $category_id

или

, если вы хотите сказать, что иногда второй аргумент может отсутствовать, а затем перепишите его следующим образом:

public function posts($path, $category_id = null) {

В этом случае $category_id будет null по умолчанию.

или

public function posts($path = null, $category_id) {

В этомcase $path будет null по умолчанию.

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