Zend Framework 2 入门-视图(View)

1、调用自定义视图

在默认情况下控制器中的action和view是一一对应的,比如HellowordController::indexAction()(path:  /module/Application/src/Application/Controller/HellowordController.php)对应的视图文件为index.phtml(path: /module/Application/view/application/helloword/index.phtml)。

在ZF2中也可以自定义视图:

首先建立自己的自定义视图文件my.phtml(当然非必须是phtml文件)

(path://module/Application/view/application/myviews/my.phtml)

然后直接在控制器中调用:

 <?php
namespace Application\Controller;

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

class HellowordController exntends AbstractActionController
{
    public function indexAction()
    {
        $view = new ViewModel();
        $view->setTemplate('application/myviews/my.phtml');
        return $view;
    }
}

也可以参考默认的’error/404′方式,在module.config.php文件中添加你的”view_manager”配置信息

<?php
return array(

    ...

   'view_manager' => array(
       'template_path_stack' => array(
           __DIR__ . '/../view',
       ),
       'template_map' => array(
            'myviews/my' => __DIR__ . '/../view/application/myviews/my.phtml',
        ),
    ),

    ...

然后就可以在视图中实际使用“myviews/my”

$view = new ViewModel();
$view->setTemplate('myviews/my');
return $view;

2、指定layout

方法与上面比较类似,首先在module.config.php配置layout参数

return array(
    'view_manager' => array(
	 'template_map' => array(
	     'myviews/layout'   => __DIR__ . '/../view/layout/layout.phtml',
	 ),
        'template_path_stack' => array(
            __DIR__ . '/../view',
        ),
    ),
);
注意:建议module.config.php文件要与view模块一一对应,因为view_manager中采用的相对路劲,一一对应的方式便于操作

然后就可以在控制器中配饰当前layout

public function indexAction()
{
    $this->layout('myviews/layout');
}

3、不使用layout直接调用对应的视图

public function indexAction()
{
    $view  = new ViewModel();
    $view->setTerminal(true);     //设置不使用layout
    $view->setVariables(array()); //向view中传参
    return $view;
}

4、在view中向layout中传递参数

例如在index.phtml中向layout.phtml传参

index.phtml :

$this->layout()->helloword = 'Hi';

layout.phtml:

echo $this->layout()->helloword; //output: Hi

5、不使用views直接打印出参数

IndexController.php

public function indexAction()
{
     return $this->getResponse()
                 ->setStatusCode(200)
                 ->setContent('foo');
}

//optput foo

6、在action中直接向layout传递参数

Module.php:

class Module
{
    ...
    public function onBootstrap( $e )
    {
	$eventManager = $e->getApplication()->getEventManager();
	$eventManager->attach( \Zend\Mvc\MvcEvent::EVENT_DISPATCH, array($this, 'preDispatch'), 100 );
    }

     public function preDispatch($e) 
    {
    	...
    	$e->getViewModel()->setVariable('names', 'start');
        ...
    }
    ...
}

layout.phtml:

echo $this->layout()->names;
//output start
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值