kohana 3用get创建路线

时间:2013-03-28 03:34:18

标签: php kohana

这与路由有关。因此,为了通过url获取参数,您基本上会按照您设置的路由格式将数据传递到URL。

这适用于链接。我创建了路由,将数据传递到url,并使用request方法获取参数以便在控制器中使用。比如URL::site("site/$color/$size")

如果我通过表单提交构建网址怎么办?例如,如果我想创建基本搜索查询。

当我通过get方法提交表单时,如何让表单提交看起来像search/orange/large而不是search.php?color=orange&size=large

3 个答案:

答案 0 :(得分:0)

definitionGET method将提交的信息作为网址参数。如果您特别想要使用site/$color/$size这样的网址,则可以使用POST-REDIRECT-GET pattern

部分示例,来自我的一个网站上的控制器(名为clear_cache_button的页面上有一个提交按钮):

public function action_index()
{
    $session = Session::instance();

    $is_post = (Request::current()->post('submit_button') !== NULL);
    $is_clear_cache = (Request::current()->post('clear_cache_button') !== NULL);

    $p = Database::instance()->table_prefix();
    $people = DB::query(Database::SELECT, "
            SELECT *
            FROM `".$p."Tabe`;
        ")->cached(600, $is_clear_cache)->execute()->as_array('RegID');

    if ($is_clear_cache)
    {
        HTTP::redirect(Request::current()->uri());
    }
    ...
    ...
    ...
}

答案 1 :(得分:0)

您可以使用Route filters(v3.3)或callbacks(3.1,3.2)并手动设置路线参数。

答案 2 :(得分:0)

你可以这样做......

public function action_index()
  {
    // this will only be executed if you submmitted a form in your page
    if(Arr::get($_POST,'search')){
      $errors = '';

      $data = Arr::extract($_POST,array('color','size'));

      // you can now access data through the $data array:
      // $data['color'], $data['size']

      // perform validations here
      if($data['color']=='') $error = 'Color is required';
      elseif($data['size']=='') $error = 'Size is required';

      if($error==''){
        $this->request->redirect('search/'.$data['color'].'/'.$data['size']);
      }
    }


    // load your search page view here

    echo 'this is the search page';

  }

希望这可以帮助你。