Как использовать $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>
Надеюсь, что это поможет.