Mutliple URL-сегменты для индексирования функции с CodeIgniter - PullRequest
2 голосов
/ 30 ноября 2010

Пожалуйста, извините, если это невероятно глупый вопрос, так как я новичок в CodeIgniter.

У меня есть контроллер для моей системы проверки под названием Verify.Я хотел бы иметь возможность использовать что-то вроде site.com/verify/123/abcd, но я хочу использовать только функцию индекса, поэтому оба сегмента URL-адреса должны идти к нему.

Я уверен, что это можно сделатькак-то с маршрутизацией URL, но я не могу понять, как передать оба сегмента URL в функцию индекса Verify.

Ответы [ 4 ]

7 голосов
/ 30 ноября 2010

Что-то вроде этого в rout.php должно выполнить работу:

$ route ['verify / (: any) / (: any)'] = "verify / index / $ 1 / $ 2";

1 голос
/ 01 декабря 2010

Я почти уверен, что вы можете просто передать любой метод контроллера в CodeIgniter множественным аргументам без изменения маршрутов или .htaccess, если я не пойму проблему неправильно.

function index($arg_one, $arg_two)
{

}

$ arg_one, представляющий 123, и $ arg_two, представляющий abcd в вашем примере URI.

0 голосов
/ 22 марта 2011

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

public function _remap($method_in, $params = array()) {
    $method = 'process_'.$method_in;
    if (method_exists($this, $method)) {
        return call_user_func_array(array($this, $method), $params);
    }
    array_unshift($params, $method_in);
    $this->index($params);
}

По сути, он делает то же самое, что и поведение по умолчанию в CI, за исключением того, что вместо отправки 404 в 'cant find method' он отправляет необоснованные вызовы методов для индекса.

Вам нужно изменить свою индексную функцию, чтобы в качестве первого аргумента принять массив. ИЛИ, если вы знаете, что вам нужны только 2 аргумента, вы можете изменить последние 2 строки на

$this->index($method_in, $params[0]);

Конечно, оба решения терпят неудачу, кто-то использует аргумент, который совпадает с методом в вашем контроллере.

0 голосов
/ 30 ноября 2010

Вам нужно будет либо отредактировать маршруты, либо написать правило htaccess, однако я не понимаю, почему вы хотите ограничиться только функцией индекса.

...