San*_*nju 3 zend-view zend-route zend-framework2
我们如何以ZF2方式从VIEW文件访问路由,发布,获取,服务器参数?
在这里,我发现了几乎相同的问题,但没有提到有关视图的地方,也没有在任
谢谢
rad*_*nan 11
您必须创建一个视图助手来为您获取这些参数.
只需复制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);
}
}
Run Code Online (Sandbox Code Playgroud)
只需更换的所有实例$controller与$request和$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());
}
),
);
}
}
Run Code Online (Sandbox Code Playgroud)
一旦你掌握了所有这些,你就会在家中.只需在params视图中调用视图助手:
// views/app/index/index.phtml
<?= $this->params('controller') ?>
<?= $this->params()->fromQuery('wut') ?>
Run Code Online (Sandbox Code Playgroud)
希望这能回答你的问题!如果您需要任何澄清,请告诉我.