无法将一个变量从Controller传递给View,Zend Framework 2

Lul*_*zim 2 zend-framework2

我有一个像这样的控制器:

namespace Application\Controller;
use Zend\Mvc\Controller\AbstractActionController;
use Zend\View\Model\ViewModel;

class IndexController extends AbstractActionController
{
    public function indexAction()
    {
        $this->view->myvar = "Hello";
    }
}
Run Code Online (Sandbox Code Playgroud)

和index.phtml视图部分:

<html>
<head>
  <title></title>
</head>
<body
<h1><?php echo $this->myvar; ?></h1>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

由于某种原因,我无法在视图上看到Hello字..并且错误是我得到的:警告:在C:\ xampp\htdocs\myZend\module\Application\src\Application\Controller中从空值创建默认对象第19行的IndexController.php

我可以看到在控制器中配置变量的东西是问题,但我不知道为什么,这是将值分配给变量的正确方法...我错过了别的吗?

ThNKS

小智 5

zf2中设置变量并传递给视图的正确方法:

           return new ViewModel(array(
           'varName' => $value,
         ));
Run Code Online (Sandbox Code Playgroud)

然后在您的视图中检索它:

          echo $this->varName;
Run Code Online (Sandbox Code Playgroud)

  • @Lulzim默认情况下它通常是`module-name/controller-name/action.phtml`,如果由于某种原因你要更改默认值,你可以通过`$ vm = new ViewModel()在你的控制器操作中执行此操作; $ VM-> setTemplate( '模块/控制器/ different.phtml'); return $ vm-> setVariables(array(/**vars ...*/))` (3认同)

ako*_*ond 5

public function indexAction()
{
   $view = new ViewModel ();
   $view->myvar = "Hello";
   return $view;
}
Run Code Online (Sandbox Code Playgroud)