zoukankan      html  css  js  c++  java
  • yii2框架

    本章描述了如何在你的应用中创建一个新的 “Hello” 页面。为了实现这一目标,将会创建一个操作和一个视图

    • 应用将会分派页面请求给操作
    • 操作将会依次渲染视图呈现 “Hello” 给最终用户

    创建操作

    为了 “Hello”,需要创建一个 say 操作,从请求中接收 message 参数并显示给最终用户。如果请求没有提供 message 参数,操作将显示默认参数 “Hello”。

    操作必须声明在控制器中。为了简单起见,你可以直接在 SiteController 控制器里声明 say 操作。这个控制器是由文件controllers/SiteController.php 定义的。以下是一个操作的声明:

    <?php
    
    namespace appcontrollers;
    
    use yiiwebController;
    
    class SiteController extends Controller
    {
        // ...其它代码...
    
        public function actionSay($message = 'Hello')
        {
            return $this->render('say', ['message' => $message]);
        }
    }

    创建视图

    视图是你用来生成响应内容的脚本。为了说 “Hello”,你需要创建一个 say 视图,以便显示从操作方法中传来的 message 参数。

    <?php
    use yiihelpersHtml;
    ?>
    <?= Html::encode($message) ?>
    

    say 视图应该存为 views/site/say.php 文件。当一个操作中调用了 yiiwebController::render() 方法时,它将会按 views/控制器 ID/视图名.php 路径加载 PHP 文件。

    创建模型

    模型类 EntryForm 代表从用户那请求的数据,该类如下所示并存储在 models/EntryForm.php 文件中。请参考类自动加载章节获取更多关于类命名约定的介绍。

    <?php
    
    namespace appmodels;
    
    use yiibaseModel;
    
    class EntryForm extends Model
    {
        public $name;
        public $email;
    
        public function rules()
        {
            return [
                [['name', 'email'], 'required'],
                ['email', 'email'],
            ];
        }
    }


    <?php $model = new EntryForm(); $model->name = 'Qiang'; $model->email = 'bad'; if ($model->validate()) { // 验证成功! } else { // 失败! // 使用 $model->getErrors() 获取错误详情 }




    <?php namespace appcontrollers; use Yii; use yiiwebController; use appmodelsEntryForm; class SiteController extends Controller { // ...其它代码... public function actionEntry() { $model = new EntryForm; if ($model->load(Yii::$app->request->post()) && $model->validate()) { // 验证 $model 收到的数据 // 做些有意义的事 ... return $this->render('entry-confirm', ['model' => $model]); } else { // 无论是初始化显示还是数据验证错误 return $this->render('entry', ['model' => $model]); } } }


    创建视图

    最后创建两个视图文件 entry-confirm 和 entry。他们会被刚才创建的 entry 操作渲染。

    entry-confirm 视图简单地显示提交的 name 和 email 数据。视图文件保存在 views/site/entry-confirm.php

    <?php
    use yiihelpersHtml;
    ?>
    <p>You have entered the following information:</p>
    
    <ul>
        <li><label>Name</label>: <?= Html::encode($model->name) ?></li>
        <li><label>Email</label>: <?= Html::encode($model->email) ?></li>
    </ul>
    

    entry 视图显示一个 HTML 表单。视图文件保存在 views/site/entry.php

    <?php
    use yiihelpersHtml;
    use yiiwidgetsActiveForm;
    ?>
    <?php $form = ActiveForm::begin(); ?>
    
        <?= $form->field($model, 'name') ?>
    
        <?= $form->field($model, 'email') ?>
    
        <div class="form-group">
            <?= Html::submitButton('Submit', ['class' => 'btn btn-primary']) ?>
        </div>
    
    <?php ActiveForm::end(); ?>


    配置数据库连接

    开始之前,请确保你已经安装了 PHP PDO 扩展和你所使用的数据库的 PDO 驱动(例如 MySQL 的 pdo_mysql)。对于使用关系型数据库来讲,这是基本要求。

    驱动和扩展安装可用后,打开 config/db.php 修改里面的配置参数对应你的数据库配置。该文件默认包含这些内容:

    <?php
    
    return [
        'class' => 'yiidbConnection',
        'dsn' => 'mysql:host=localhost;dbname=yii2basic',
        'username' => 'root',
        'password' => '',
        'charset' => 'utf8',
    ];


    <?php namespace appcontrollers; use yiiwebController; use yiidataPagination; use appmodelsCountry; class CountryController extends Controller { public function actionIndex() { $query = Country::find(); $pagination = new Pagination([ 'defaultPageSize' => 5, 'totalCount' => $query->count(), ]); $countries = $query->orderBy('name') ->offset($pagination->offset) ->limit($pagination->limit) ->all(); return $this->render('index', [ 'countries' => $countries, 'pagination' => $pagination, ]); } }
  • 相关阅读:
    JavaScript的valueOf和toString
    Max SPA
    SQL Server从BAK文件还原新的数据库
    SQL Server删除log文件
    为什么要监控sql语句?如何监控?
    Mac下使用zsh不执行/etc/profile文件
    MAC下快速打开指定目录(转)
    干货满满!10分钟看懂Docker和K8S(转)
    Spring Boot Metrics监控之Prometheus&Grafana(转)
    Spring Boot Actuator:健康检查、审计、统计和监控(转)
  • 原文地址:https://www.cnblogs.com/taokai/p/5374438.html
Copyright © 2011-2022 走看看