繁体   English   中英

现在不建议使用Zend查询,在URL中发布查询的最佳方法是什么?

[英]Now that the Zend Query has been deprecated what is the best way to post query's in the url?

阅读手册后,看来段隔离方式是将查询内容立即发布到url的最佳方法(多个字段上的sql查询)。 有谁能效法我的榜样? 还是链接? 当我在模块配置中使用查询选项时,出现以下消息。 但是找不到有关新方法的任何信息。

 Query route deprecated as of ZF 2.1.4; use the "query" option of the HTTP router's assembling method instead 

以下内容是否进入控制器或视图? 模块配置看起来像

'route' => 'foo[/:page][/:sort]'

下面是我发现的一个例子

  $url = $router->assemble(array(
        'name' => 'foo',
    ), array(
        'query' => array(
            'page' => 3,
            'sort' => 'DESC',
        ), 
        // or: 'query' => 'page=3&sort=DESC'
    ));

    // via URL helper/plugin:
    $rendererOrController->url('foo', array(), array('query' => $request->getQuery()));

我的观点:

$form->setAttribute('action', $this->url(
 'home/results',
 array(
     'action' => 'results',
     'search_zip'=> '$this->search_zip',

模块配置

'route' => 'results[/:search_zip]

非常感谢,马特

由于不赞成使用查询字符串,因此我们可以使用替代方法来使用查询字符串。

您可以添加参数以及route以获取/保留查询字符串值。 但是查询字符串需要在和查询字符串之间使用“ /”标记传递,而不是使用“?”。 标记。

/ route-name / key = value&key = value1

您必须创建从查询字符串中提取键和值并返回数组的函数,您可以将该函数添加到通用文件中,以便可以在整个项目中需要的任何控制器中调用该函数。

您必须使用以下语句在控制器$ this-> params('queryPara')中获取查询字符串值,并将其传递给函数,该函数将以“ key” =>“ value”格式返回查询字符串。

路由配置必须针对您要使用查询字符串的路由。

'router' => array(
    'routes' => array(
        '<route-name>' => array(
            'type' => 'segment',
            'options' => array(
                'route' => '<route-name>[/:action][/:queryPara][/]',
                'constraints' => array(
                    'action' => '[a-zA-Z][a-zA-Z0-9_-]*',
                    'queryPara' => '[a-zA-Z][a-zA-Z0-9_-&=]*',
                ),
                'defaults' => array(
                    'controller' => 'Application\Controller\Index',
                    'action' => 'index',
                )
            ),
        ),
    )),

希望这会有用

谢谢,Lakhan Kriplani

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM