首页 > 其他分享 >yii2视图

yii2视图

时间:2024-03-30 14:00:12浏览次数:26  
标签:web 渲染 yii 视图 base yii2 View

yii2视图

示例代码

<?php
use yii\helpers\Html;
use yii\widgets\ActiveForm;

/* @var $this yii\web\View */
/* @var $form yii\widgets\ActiveForm */
/* @var $model app\models\LoginForm */

$this->title = 'Login';
?>
<h1><?= Html::encode($this->title) ?></h1>

<p>Please fill out the following fields to login:</p>

<?php $form = ActiveForm::begin(); ?>
    <?= $form->field($model, 'username') ?>
    <?= $form->field($model, 'password')->passwordInput() ?>
    <?= Html::submitButton('Login') ?>
<?php ActiveForm::end(); ?>

控制器中渲染

yii\base\Controller::render(): 渲染一个 视图名 并使用一个 布局 返回到渲染结果。
yii\base\Controller::renderPartial(): 渲染一个 视图名 并且不使用布局。
yii\web\Controller::renderAjax(): 渲染一个 视图名 并且不使用布局, 并注入所有注册的JS/CSS脚本和文件,通常使用在响应AJAX网页请求的情况下。
yii\base\Controller::renderFile(): 渲染一个视图文件目录或别名下的视图文件。

小部件中渲染

yii\base\Widget::render(): 渲染一个 视图名.
yii\base\Widget::renderFile(): 渲染一个视图文件目录或别名下的视图文件。

其他地方渲染

// 显示视图文件 "@app/views/site/license.php"
echo \Yii::$app->view->renderFile('@app/views/site/license.php');

视图中访问数据

echo $this->render('report', [
    'foo' => 1,
    'bar' => 2,
]);
<?= $this->context->id ?>

布局

<?php
use yii\helpers\Html;

/* @var $this yii\web\View */
/* @var $content string 字符串 */
?>
<?php $this->beginPage() ?>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8"/>
    <?= Html::csrfMetaTags() ?>
    <title><?= Html::encode($this->title) ?></title>
    <?php $this->head() ?>
</head>
<body>
<?php $this->beginBody() ?>
    <header>My Company</header>
    <?= $content ?>
    <footer>© 2014 by My Company</footer>
<?php $this->endBody() ?>
</body>
</html>
<?php $this->endPage() ?>
yii\base\View::beginPage(): 该方法应在布局的开始处调用, 它触发表明页面开始的 yii\base\View::EVENT_BEGIN_PAGE 事件。
yii\base\View::endPage(): 该方法应在布局的结尾处调用, 它触发表明页面结尾的 yii\base\View::EVENT_END_PAGE 时间。
yii\web\View::head(): 该方法应在HTML页面的<head>标签中调用, 它生成一个占位符,在页面渲染结束时会被注册的头部HTML代码(如,link标签, meta标签)替换。
yii\web\View::beginBody(): 该方法应在<body>标签的开始处调用, 它触发 yii\web\View::EVENT_BEGIN_BODY 事件并生成一个占位符, 会被注册的HTML代码(如JavaScript)在页面主体开始处替换。
yii\web\View::endBody(): 该方法应在<body>标签的结尾处调用, 它触发 yii\web\View::EVENT_END_BODY 事件并生成一个占位符, 会被注册的HTML代码(如JavaScript)在页面主体结尾处替换。

控制器中修改布局文件

namespace app\controllers;

use yii\web\Controller;

class PostController extends Controller
{
    public $layout = 'post';
    
    // ...
}

使用视图组件

[
    // ...
    'components' => [
        'view' => [
            'class' => 'app\components\View',
        ],
        // ...
    ],
]

注册Meta元标签

<?php
$this->registerMetaTag(['name' => 'keywords', 'content' => 'yii, framework, php']);
?>
$this->registerMetaTag(['name' => 'description', 'content' => 'This is my cool website made with Yii!'], 'description');
$this->registerMetaTag(['name' => 'description', 'content' => 'This website is about funny raccoons.'], 'description');

视图事件

yii\base\View::EVENT_BEFORE_RENDER: 在控制器渲染文件开始时触发, 该事件可设置 yii\base\ViewEvent::isValid 为 false 取消视图渲染。
yii\base\View::EVENT_AFTER_RENDER: 在布局中调用 yii\base\View::beginPage() 时触发, 该事件可获取yii\base\ViewEvent::output的渲染结果,可修改该属性来修改渲染结果。
yii\base\View::EVENT_BEGIN_PAGE: 在布局调用 yii\base\View::beginPage() 时触发;
yii\base\View::EVENT_END_PAGE: 在布局调用 yii\base\View::endPage() 是触发;
yii\web\View::EVENT_BEGIN_BODY: 在布局调用 yii\web\View::beginBody() 时触发;
yii\web\View::EVENT_END_BODY: 在布局调用 yii\web\View::endBody() 时触发。

标签:web,渲染,yii,视图,base,yii2,View
From: https://www.cnblogs.com/hu308830232/p/18105400

相关文章

  • yii2 模型
    yii2模型Yii2的模型(Model)是MVC(Model-View-Controller)设计模式中的一部分,它代表业务数据、规则和逻辑的对象。模型通常用于处理与数据相关的业务逻辑,如数据的验证、访问和修改等。模型示例代码<?phpnamespaceapp\models;useYii;useyii\db\ActiveRecord;......
  • yii2 配置bootstrap使用
    yii2配置bootstrap使用配置config/web.php添加people<?php...$config=[...'bootstrap'=>['log','people'],...'components'=>['people'=>['class'......
  • yii2 Gii使用和自定义模板
    yii2Gii使用和自定义模板配置开启giiconfig/web.php添加代码if(YII_ENV_DEV){$config['bootstrap'][]='gii';$config['modules']['gii']=['class'=>'yii\gii\Module',];}入口脚本web......
  • yii2控制器
    yii2控制器Yii2的控制器(Controller)是MVC(Model-View-Controller)设计模式中的核心组件之一,负责处理用户请求并生成相应的响应。控制器包含了处理请求所需的方法(通常称为动作方法或动作),并可以调用模型和视图来执行相应的业务逻辑和展示内容。在Yii2中,控制器类通常继承自yii\we......
  • yii2安装
    yii2安装安装composercurl-sShttps://getcomposer.org/installer|phpmvcomposer.phar/usr/local/bin/composer安装yii2-basiccomposercreate-project--prefer-dist--stability=devyiisoft/yii2-app-basicyii2-basicnginx配置server{listen......
  • openGauss 物化视图
    物化视图可获得性本特性自openGauss1.1.0版本开始引入。特性简介物化视图实际上就是一种特殊的物理表,物化视图是相对普通视图而言的。普通视图是虚拟表,应用的局限性较大,任何对视图的查询实际上都是转换为对SQL语句的查询,性能并没有实际上提高。而物化视图实际上就是存储SQL所......
  • 多视图三维重建-SFM简介
    背景掌握传统的多视图三维重建基本流程总体流程多视图三维重建的Pipieline如下图,总共分为四个步骤:拍摄场景多视角的图像建立这些图像之间的联系(DataAssociation)SFM稀疏重建MVS稠密重建DataAssociation建立图像之间的联系主要包含以下4个步骤:1)特征提取;2)特征匹配;3)基......
  • 必备知识点 视图
    4.视图1.视图参数#urls.pyurlpatterns=[path('login/',account.login,name="login"),path('auth/',order.auth,name='auth'),]#views.pyfromdjango.shortcutsimportHttpResponsedeflogin(request):re......
  • mysql 视图的创建
    概述MySQL视图是一个虚拟表,其内容由查询定义。同真实的表一样,视图包含一系列带有名称的列和行数据。但是,视图并不在数据库中以存储的数据值集形式存在。行和列数据来自由定义视图的查询所引用的表,并且在引用视图时动态生成。对其中所引用的基础表来说,MySQL视图的作用类似于筛选......
  • openGauss/MOGDB时间消耗相关视图
    openGauss/MOGDB时间消耗相关视图本文出处:https://www.modb.pro/db/388212数据库版本openGauss/MOGDB-2.1.1一、显示当前用户在各个节点上正在执行的作业的负载管理记录(单位:ms)包含:语句执行前的阻塞时间、语句执行的开始时间、语句已经执行的时间、语句执行预估总时间、语句......