2015-09-14 3 views
2

У меня есть URL, как это: http://localhost/sitename/some-post-title/code=24639204963309423Codeigniter - Как получить значение переменной url внутри функции contoller?

Теперь у меня есть один findUser функцию в моем файле контроллера

public function findUser() { 
    // I have tried with $_GET['code'] 
} 

, и я пытаюсь получить code значение переменной внутри этой функции. Я пробовал с $_GET['code'], но не работал.

Любая идея, как получить значение внутри функции контроллера?

Спасибо.

+0

Вы не пропуская ничего здесь через GET. Вы можете попробовать '$ this-> uri-> segment (3)', чтобы получить строку 'code = ...'. –

ответ

3

Вы пытаетесь получить переменную сегмента пути или переменную GET? Похоже, вы немного побываете.

Врожденная в CI, вы можете использовать $this->input->get если вы обновляете свой адрес, чтобы выглядеть как

http://localhost/sitename/some-post-title/?code=24639204963309423 

(Обратите внимание на знак вопроса).

В качестве альтернативы, вы можете изменить ваш URL, чтобы посмотреть, как этот

http://localhost/sitename/some-post-title/code/24639204963309423 

И затем использовать сегменты URI, как так

$data = $this->uri->uri_to_assoc(); 
$code = $data['code']; 

Если вы не хотите, чтобы изменить URL, вы должны сломать эту строку так вручную

$data = $this->uri->segment(3); 
$data = explode($data, '='); 
$code = $data[1]; 

Я бы сказал, что второй вариант - это самый SEO-фри ndly и довольно решение. Но каждый из них должен быть функционально идентичным.

1

Если ваш URI содержит более двух сегментов, они будут переданы вашей функции в качестве параметров.

Например, предположим, что у вас есть URI, как это:

example.com/index.php/products/shoes/sandals/123 

Ваша функция будет передана URI сегменты 3 и 4 ("сандалии" и "123"):

<?php 
class Products extends CI_Controller { 

    public function shoes($sandals, $id) 
    { 
     echo $sandals; 
     echo $id; 
    } 
} 
?> 

Если вы используете GET, чтобы получить параметры, вы можете сделать так:

$this->input->get('get_parameter_name'); 

Обычно существует взаимно одно отношение между строкой URL и соответствующим классом/методом контроллера. Сегменты в URI обычно следуют этому шаблону:

example.com/class/function/id/ 

Подробнее для контроллеров найти here и GET найти here