0

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

这是使用链接。我创建了路由,将数据传递到url中,并使用请求方法获取参数以供控制器使用。喜欢URL::site("site/$color/$size")

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

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

4

3 回答 3

0

您可以使用路由过滤器(v3.3)或回调(3.1、3.2)并手动设置路由参数。

于 2013-03-28T22:06:28.537 回答
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';

  }

希望这可以帮助你。

于 2013-04-01T00:31:42.207 回答
0

根据定义GET 方法将提交的信息作为 URL 参数。如果您特别想以类似的 URL 结尾site/$color/$size,您可以使用POST-REDIRECT-GET 模式

一个部分示例,来自我的一个站点上的控制器(页面上有一个名为 的提交按钮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());
    }
    ...
    ...
    ...
}
于 2013-03-28T03:41:58.897 回答