如何使用$ this-> request-> Kohana的param来获取请求变量

时间:2011-04-11 13:04:54

标签: php 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);
  }

}

但是当我试图点击网址时http://localhost/k/album?id=4 我得到NULL值。 如何使用request-&gt; param访问kohana中的请求变量,而不使用$ _GET和$ _POST方法?

4 个答案:

答案 0 :(得分:24)

在Kohana v3.1 + Request类中有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())。

答案 1 :(得分:4)

在Konana(3.0)中,您无法通过Request类访问$ _GET / $ _ POST。你必须直接使用$ _GET / $ _ POST

$this->request->param('paramname', 'defaultvalue')用于访问路线中定义的参数。对于<controller>/<action>/<id>之类的路线网址,您可以使用$this->request->param('id')访问路径网址中的部分。

编辑:在Kohana 3.1中,有postquery方法来获取/设置请求的数据;查看http://kohanaframework.org/3.1/guide/api/Request

上的文档

答案 2 :(得分:1)

请注意,尽管使用$ this-&gt; request-&gt; param()更清楚,但您可以将操作参数定义为:

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

直接访问这些变量。你必须按照它们在相应路径中定义的相同顺序定义这些变量(不包括动作和控制器参数,它们在请求级别上定义,因此不需要将它们传递给动作方法)。

编辑:此功能在3.1中已弃用,已从3.2中删除,因此最好避免使用。您可以在此处阅读更多内容:http://kohanaframework.org/3.2/guide/kohana/upgrading#controller-action-parameters

答案 3 :(得分:0)

如果我记得很清楚,如果您没有更改默认路线,可以尝试使用该控制器的网址http://localhost/k/album/4

由于默认路线的格式为:/<controller>/<action>/<id>

希望它有所帮助。