这与路由有关。因此,为了通过url获取参数,您基本上会按照您设置的路由格式将数据传递到URL。
这适用于链接。我创建了路由,将数据传递到url,并使用request方法获取参数以便在控制器中使用。比如URL::site("site/$color/$size")
如果我通过表单提交构建网址怎么办?例如,如果我想创建基本搜索查询。
当我通过get方法提交表单时,如何让表单提交看起来像search/orange/large
而不是search.php?color=orange&size=large
。
答案 0 :(得分:0)
按definition,GET 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';
}
希望这可以帮助你。