Метод индекса Codeigniter возвращает «индекс» для параметра GET, если параметра нет? - PullRequest
0 голосов
/ 21 сентября 2018

У меня есть эта часть кода:

<?php
defined('BASEPATH') OR exit('No direct script access allowed');

class Blog extends CI_Controller {

    function _remap($page){

            $this->index($page);
    }

    public function index($page = '1')
    {
        var_dump($page); exit;
    }
}

Когда я нажимаю domain/index.php/blog var_dump возвращает меня string(5) "index" когда я нажимаю domain/index.php/blog/2 возвращает меня2, что правильно?Но почему ?У меня есть параметр по умолчанию $page = '1'?

1 Ответ

0 голосов
/ 21 сентября 2018

Когда вы нажимаете domain/index.php/blog/2, это означает, что вы вызываете индекс метода по умолчанию для контроллера блога и передаете 2 в качестве параметра.В этом сценарии он заменит ваш параметр по умолчанию $page = '1' на 2.

Когда вы нажмете domain/index.php/blog, тогда индексная функция будет вызвана без каких-либо параметров, и для $page будет принято значение 1.

ОБНОВЛЕННЫЙ ОТВЕТ (Согласно комментарию)

Если ваш контроллер содержит метод с именем _remap (), он всегда будет вызываться независимо от того, что содержит ваш URI.Он отменяет нормальное поведение, при котором URI определяет, какой метод вызывается, что позволяет вам определять свои собственные правила маршрутизации методов.

Ссылка на документацию

Использовать нижекод это решит вашу проблему.

<?php
defined('BASEPATH') OR exit('No direct script access allowed');

class Blog extends CI_Controller {

    function _remap($page){
        if($page=='index'){
            $this->index($page = 1);
        }
        $this->index($page);        
    }

    public function index($page = 1)
    {       
        var_dump($page); exit;
    }

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