Как использовать $this-> request-> param of Kohana для получения переменных запроса

Я написал образец контроллера в kohana

    <?php

defined('SYSPATH') OR die('No direct access allowed.');

class Controller_Album extends Controller {

  public function action_index() {
    $content=$this->request->param('id','value is null');   
    $this->response->body($content);
  }

}

Но когда я пытаюсь нажать url http://localhost/k/album?id=4 Я получаю значение NULL. как я могу получить доступ к переменной запроса в kohana, используя request- > param и не используя метод $_GET и $_POST?

Ответ 1

В Kohana v3.1 + класс запроса имеет методы query() и post(). Они работают как в качестве геттера, так и сеттера:

// get $_POST data
$data = $this->request->post();
// returns $_GET['foo'] or NULL if not exists
$foo = $this->request->query('foo'); 

// set $_POST['foo'] value for the executing request
$request->post('foo', 'bar');
// or put array of vars. All existing data will be deleted!
$request->query(array('foo' => 'bar'));

Но помните, что данные GET/POST не будут перегружать текущие значения $_GET/$_ POST. Они будут отправлены после выполнения запроса (вызов $request->execute()).

Ответ 2

В Konana (3.0) вы не можете получить $_GET/$_ POST через класс Request. Вам придется напрямую использовать $_GET/$_ POST

$this->request->param('paramname', 'defaultvalue') предназначен для доступа к параметрам, определенным на маршруте. Для маршрутных URL-адресов, таких как <controller>/<action>/<id>, вы должны использовать $this->request->param('id') для доступа к части URL-адреса маршрута.

edit: в Kohana 3.1 существуют методы post и query для получения/установки данных запроса; проверьте документацию на http://kohanaframework.org/3.1/guide/api/Request

Ответ 3

Обратите внимание на то, что более просто использовать $this- > request- > param(), вы можете определить параметры действия как:

public function action_index($id, $seo = NULL, $something = NULL)..

и получить доступ к этим vars напрямую. Вы должны определить эти вары в том же порядке, в каком они определены на соответствующем маршруте (за исключением параметров действия и контроллера, они все равно определены на уровне запросов, поэтому нет необходимости передавать их методу действия).

EDIT: эта функциональность была устаревшей в 3.1 и была удалена из 3.2, поэтому ее лучше избегать. Вы можете прочитать здесь: http://kohanaframework.org/3.2/guide/kohana/upgrading#controller-action-parameters

Ответ 4

Если я хорошо помню, если вы не изменили маршруты по умолчанию, вы можете попробовать использовать этот http://localhost/k/album/4 с этим контроллером.

Поскольку маршрут по умолчанию находится в форме: /<controller>/<action>/<id>

Надеюсь, что это поможет.