【问题标题】:ZF3: $request->getQuery('my_var') vs $this->params()->fromQuery('var_name')?ZF3:$request->getQuery('my_var') 与 $this->params()->fromQuery('var_name')?
【发布时间】:2017-08-02 12:24:13
【问题描述】:

我正在通过这个book 学习 ZF3,我遇到了这个:

在我的控制器中,我可以像这样在 ZF3 中获取 $_GET['var_name']:

$request = $this->getRequest();
$request->getQuery('var_name');

或者这样:

$this->params()->fromQuery('var_name');

这两者有什么区别? (改写问题:为什么有两种方法可以做同样的事情?)。在特定情况下,一个优先于另一个?

【问题讨论】:

    标签: php zend-framework zend-framework3


    【解决方案1】:

    数据是请求的一部分,因此它保存在请求对象中。 params 控制器插件(您的第二个示例)提供了一种更简洁的方式来访问这些数据,因此您应该使用它来从控制器访问数据。

    【讨论】:

    • 在我的第一个代码示例中,除了控制器,还有其他地方可以使用它吗?
    【解决方案2】:
    $this->params()->fromQuery('var_name');
    

    这里$this->params()是控制器插件,你只能在控制器中使用它。

    但对于

    $request = $this->getRequest();
    $request->getQuery('var_name');
    

    您可以访问任何类的请求,如下所示-

    $request = new Request();
    

    【讨论】:

    • 要访问任何类的请求,您应该使用ServiceManager: $container->get('Request') 注入它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-22
    • 2020-02-28
    • 1970-01-01
    相关资源
    最近更新 更多