1. 概述
Yii2 是一款基于 PHP 的高性能 Web 框架,与其它 Web 应用程序框架不同的是,Yii2 遵循了 MVC 设计模式,同时也是一个用于快速开发现代 Web 应用程序的高效框架。Yii2 拥有强大的缓存支持、RESTful API 开发、CLI 工具和基于接口的模块化设计。
2. MVC 设计模式
MVC 模式是一种架构模式,将整个应用程序分为三个不同的部分:模型、视图和控制器。这种模式的主要目的是分离应用程序的不同部分的代码,从而使代码结构更清晰,更易于维护和扩展。
2.1 Model 模型
模型表示应用程序中存储和处理数据的部分。它们与数据库、web服务或任何其他数据存储部分进行交互,以获取需要的数据,以进行更新或删除等。在 Yii2 中,模型被存储在 models/
目录中。
// 创建模型
namespace app\models;
use yii\db\ActiveRecord;
class User extends ActiveRecord
{
}
2.2 View 视图
视图表示应用程序中的显示层。它们负责将在浏览器中显示的内容显示给用户。在 Yii2 中,视图存储在 views/
目录中。
// 创建视图
= $title ?>
2.3 Controller 控制器
控制器调度模型和视图之间的交互。它们接收来自用户的请求,选择合适的模型来处理数据,并选择合适的视图来呈现数据。在 Yii2 中,控制器存储在 controllers/
目录中。
// 创建控制器
namespace app\controllers;
use yii\web\Controller;
class SiteController extends Controller
{
public function actionIndex()
{
$title = 'Hello World!';
return $this->render('index', compact('title'));
}
}
3. 表单
表单是 Web 应用程序中非常重要的一部分,通常用于收集用户输入数据,并将其保存到数据库中。 Yii2 的表单组件提供了一个易于使用的界面,帮助我们快速构建表单并且自动验证和处理表单数据。
3.1 创建表单
在 Yii2 中,表单通常由 ActiveForm 组件创建。
// 创建表单
use yii\widgets\ActiveForm;
$form = ActiveForm::begin(['id' => 'contact-form']);
echo $form->field($model, 'name');
echo $form->field($model, 'email');
echo $form->field($model, 'message')->textarea(['rows' => 6]);
echo Html::submitButton('Submit', ['class' => 'btn btn-primary']);
ActiveForm::end();
3.2 表单验证
Yii2 表单自动验证数据,如果数据不符合规范会提示错误信息。如下代码为表单验证代码:
// 表单验证
public function rules()
{
return [
[['name', 'email', 'message'], 'required'],
['email', 'email'],
];
}
4. 布局
布局是 Web 应用程序中非常重要的一部分,它负责决定网页中各元素的位置和大小。Yii2 提供了一个灵活的布局系统,可以让我们轻松地调整应用程序的外观和手感。
4.1 创建布局
您可以通过定义布局文件或控制器之间的混合来创建布局。如果一个视图使用了布局,那么这个视图会被插入到布局中的相应部分。
// 创建布局
namespace app\views\layouts;
use app\assets\AppAsset;
use yii\helpers\Html;
use yii\bootstrap\Nav;
use yii\bootstrap\NavBar;
use yii\widgets\Breadcrumbs;
use app\widgets\Alert;
/* @var $this \yii\web\View */
/* @var $content string */
AppAsset::register($this);
?>
beginPage() ?>
= Html::csrfMetaTags() ?>
= Html::encode($this->title) ?>
head() ?>
beginBody() ?>
NavBar::begin([
'brandLabel' => 'My Company',
'brandUrl' => Yii::$app->homeUrl,
'options' => [
'class' => 'navbar-inverse navbar-fixed-top',
],
]);
$menuItems = [
['label' => 'Home', 'url' => ['/site/index']],
['label' => 'About', 'url' => ['/site/about']],
['label' => 'Contact', 'url' => ['/site/contact']],
];
if (Yii::$app->user->isGuest) {
$menuItems[] = ['label' => 'Signup', 'url' => ['/site/signup']];
$menuItems[] = ['label' => 'Login', 'url' => ['/site/login']];
} else {
$menuItems[] = ''
. Html::beginForm(['/site/logout'], 'post')
. Html::submitButton(
'Logout (' . Yii::$app->user->identity->username . ')',
['class' => 'btn btn-link logout']
)
. Html::endForm()
. '';
}
echo Nav::widget([
'options' => ['class' => 'navbar-nav navbar-right'],
'items' => $menuItems,
]);
NavBar::end();
?>
= Breadcrumbs::widget([
'links' => isset($this->params['breadcrumbs']) ? $this->params['breadcrumbs'] : [],
]) ?>
= Alert::widget() ?>
= $content ?>
© My Company = date('Y') ?>
= Yii::powered() ?>
endBody() ?>
endPage() ?>
4.2 修改布局
要修改布局,您可以编辑布局文件并更改视图文件和布局文件之间的关联。您还可以通过定义多个布局文件,并从控制器中的操作文件中选择适当的布局来使用多个布局。
5. 总结
本文讨论了 Yii2 中的 MVC、表单和布局。MVC 设计模式是构建高端 Web 应用程序的重要概念之一。Yii2 的表单和布局系统提供了在 Web 应用程序中创建和管理表单和布局的强大和灵活的方法,让开发更为便利。