我们如何以 ZF2 方式从VIEW文件中访问路由、发布、获取、服务器参数?
在这里,我发现了几乎相同的问题,但没有提到关于视图的地方,也没有在任何地方回答
谢谢
您必须创建一个视图助手来为您获取这些参数。
只需复制Zend\Mvc\Controller\Plugin\Params
到App\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
为$request
and$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') ?>
希望这能回答你的问题!如果您需要任何澄清,请告诉我。
我为此目的创建了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 源