3

我们如何以 ZF2 方式从VIEW文件中访问路由、发布、获取、服务器参数?

在这里,我发现了几乎相同的问题,但没有提到关于视图的地方,也没有在任何地方回答

谢谢

4

2 回答 2

11

您必须创建一个视图助手来为您获取这些参数。

查看助手

只需复制Zend\Mvc\Controller\Plugin\ParamsApp\View\Helper\Params并进行一些调整:

<?php

namespace App\View\Helper;

use Zend\Mvc\MvcEvent;
use Zend\Stdlib\RequestInterface;
use Zend\View\Helper\AbstractHelper;

class Params extends AbstractHelper
{
    protected $request;

    protected $event;

    public function __construct(RequestInterface $request, MvcEvent $event)
    {
        $this->request = $request;
        $this->event = $event;
    }

    public function fromPost($param = null, $default = null)
    {
        if ($param === null)
        {
            return $this->request->getPost($param, $default)->toArray();
        }

        return $this->request->getPost($param, $default);
    }

    public function fromRoute($param = null, $default = null)
    {
        if ($param === null)
        {
            return $this->event->getRouteMatch()->getParams();
        }

        return $this->event->getRouteMatch()->getParam($param, $default);
    }
}

只需将所有实例替换$controller$requestand$event属性即可。你明白了。(不要忘记复制 DocBlock 评论!)

工厂

接下来我们需要一个工厂来创建我们的视图助手的实例。在您的App\Module课程中使用类似以下的内容:

<?php
namespace App;

use App\View\Helper;
use Zend\ServiceManager\ServiceLocatorInterface;

class Module
{
    public function getViewHelperConfig()
    {
        return array(
            'factories' => array(
                'Params' => function (ServiceLocatorInterface $helpers)
                {
                    $services = $helpers->getServiceLocator();
                    $app = $services->get('Application');
                    return new Helper\Params($app->getRequest(), $app->getMvcEvent());
                }
            ),
        );
    }
}

如何使用

一旦你拥有了所有这些,你就在主场。只需从您的视图中调用params视图助手:

// views/app/index/index.phtml
<?= $this->params('controller') ?>
<?= $this->params()->fromQuery('wut') ?>

希望这能回答你的问题!如果您需要任何澄清,请告诉我。

于 2013-04-15T15:34:12.600 回答
1

我为此目的创建了Params View Helper (正如@radnan 建议的那样)。

通过作曲家安装它

作曲家需要 tasmaniski/zf2-params-helper

注册新模块

'modules' => array(
    '...',
    'ParamsHelper'
),

并使用它

$this->params()->fromPost();  //read all variables from $_POST
$this->params()->fromRoute(); //read all variables from Routes
$this->params()->fromQuery(); //read all variables from $_GET

查看完整文档GitHub 源

于 2015-11-12T19:09:58.987 回答