• Yii2系列教程:安装及Hello World


    http://www.yiiframework.com/

    安装Yii2

    打算从头开始,所以,连安装Yii2也稍微写一点吧。安装Yii2最好的方式就是使用composer

    composer global require "fxp/composer-asset-plugin:~1.0.3"
    
    composer create-project --prefer-dist yiisoft/yii2-app-basic helloYii
    

    等待一小段时间之后(如果等太久或直接报错,请使用VPN),在这两步你应该会看到类似下面的信息:

    Updating dependencies (including require-dev)
      - Installing fxp/composer-asset-plugin (v1.0.3)
        Downloading: 100%
    
    Writing lock file
    Generating autoload files
    > yiicomposerInstaller::postCreateProject
    chmod('runtime', 0777)...done.
    chmod('web/assets', 0777)...done.
    chmod('yii', 0755)...done.
    

    这里的第一条命令跟官方文档的有稍微的差别,官方文档还是停留在fxp/composer-asset-plugin:~1.0.0,在我写这篇文章的时候,最新版本为fxp/composer-asset-plugin:~1.0.3。所以这里会有一些些不一样。

    注,我直接将helloYii项目放在了桌面,你可以根据自己的喜好调整目录

    安装完Yii2之后,进入到项目的web/目录:

    cd helloYii/web
    

    开启PHP内置服务器:

    php -S localhost:8999
    

    然后再浏览器输入localhost:8999,你就可以看到下面的页面了:

    替代文字

    这里需要说明的是:我是在mac下进行的开发,并且处于便捷的原因,我后续也会一直使用PHP内置服务器,也就是说本教程的localhost:8999是我默认的首页地址。至于用MAMP for OS X的用户,你可以直接配置MAMP

    cd /Applications/MAMP/htdocs
    ln -s ~/Desktop/helloYii/ /Applications/MAMP/htdocs/helloYii
    

    然后你可以访问这样的地址:http://localhost:8888/helloYii/web,不出意外,你也可以看Yii默认的可爱首页了。

    对于用Windows的同学,我建议你们直接用WAMP,不过具体配置我倒是没有实际操作过,所以不做任何评论。

    关于Yii2

    MVC的支持就基本不用多说了,之前发过一篇文章粗略地说过一遍。而在这里我想说明的是:在Yii2中,我们的单入口文件是web/index.php,所以刚刚在开启PHP内置服务器的时候需要来到这个目录,不过如果你直接指定也是可以的。这个文件负责将Yii2项目所需要的东西全部加载完成之后,最后通过run方法来使得整个项目可以跑起来:

    <?php
    
    // comment out the following two lines when deployed to production
    defined('YII_DEBUG') or define('YII_DEBUG', true);
    defined('YII_ENV') or define('YII_ENV', 'dev');
    
    require(__DIR__ . '/../vendor/autoload.php');
    require(__DIR__ . '/../vendor/yiisoft/yii2/Yii.php');
    
    $config = require(__DIR__ . '/../config/web.php');
    
    (new yiiwebApplication($config))->run();
    

    默认的情况下,我们看到的Yii2首页是/controllers/SiteController.php下的Index方法:

    public function actionIndex()
        {
            return $this->render('index');
        }

    通常情况下,控制器一般都会有比较多的方法来链接模型和视图之间的桥梁,但是方法虽多,很多时候都只是一些简单的代码和逻辑,所以,不用担心。

    上面的Index方法渲染了index这个模版,而这个模板位于/views/site/index.php,至于控制器和视图之间的命名规则,参考这里:

    views/ControllerID/ViewName.php
    

    ControllerID : 表示控制器的ID,也就是控制器去掉Controller的前缀,比如SiteController就对应site

    ViewName : 是对应方法的名字,但是不包括action字眼,比如actionIndex对应的是index.php

    而在使用render方法来渲染视图的时候,Yii2默认地也会渲染载入/views/layouts/main.php这个文件,而这个文件做的事就是载入一些html头部的共用文件,比如jscss,导航栏和底部繁荣导航栏等。这里其实我们最值得关心的其实就是下面这段代码的<?= $content ?>

    <?= Breadcrumbs::widget([
                    'links' => isset($this->params['breadcrumbs']) ? $this->params['breadcrumbs'] : [],
                ]) ?>
                <?= $content ?>
            </div>
    

    这个<?= $content ?>可以说就是我们之后定义视图的内容,我们后续创建的视图文件会被读成字符串的形式赋给$content,然后进行渲染显示。

    Hello World

    有了上面的安装和基本知识之后,我们就可以自己动手来创建一个页面了。不过在创建页面之前,我们先来做一点简单的配置:开启Yii2的enablePrettyUrl模式,因为这样对于后续的开发会便捷很多,而且开启之后,我们的url也会变得很简洁又好,不想现在这样:

    http://localhost:8999/index.php?r=site%2Fabout
    

    这是我点击首页导航栏的About出现的url,一看到这个,我是拒绝的,所以来到/config/web.php这个配置文件中,找到'components' => []这个数组,加入下面的两行代码:

    'urlManager' => [
                'showScriptName' => false,
                'enablePrettyUrl' => true
            ],
    

    加入之后,正确的代码配置是长成这个样子的:

    'components' => [
            'urlManager' => [
                'showScriptName' => false,
                'enablePrettyUrl' => true
            ],
            'request' => [
    

    这样开启enablePrettyUrl模式之后,我们就可以通过http://localhost:8999/site/about来访问我们的About页面了,这里的规律是这样的:

    
    http://localhost:8999/ControllerID/ActionName
    

    比如,我们在/controllers/SiteController.php创建一个Say操作方法:

    public function actionSay($target = 'World')
    {
        return $this->render('say', ['target' => $target]);
    }
    

    我们要访问这个方法的正确路径就是http://localhost:8999/site/say 。

    在Yii中使用action关键字前缀来区分用于url操作方法和其他方法,这里的actionSay接收一个参数$target,如果用户在访问的时候传入target参数,target就为用户传入的值,而如果用户没有传入,我们将其默认值设为World。有了控制器的方法,从$this->render('say', ['target' => $target])这行代码来看,我们需要需要创建一个say.php模板文件,这个文件是在哪里的呢?

    根据前面说的视图模板规则,它应该位于:/views/site/say.php。在里面简单写上下面这一小段代码:

    <?php
    use yiihelpersHtml;
    ?>
    <h1>Hello <?= Html::encode($target) ?></h1>
    <p>Welcome to your Yii2 demonstration application.</p>
    

    出于安全的因素考虑,我们在say.php这个模版文件中使用了yiihelpersHtml类来对用户传入的数据进行过滤,所以我们才有了这样的输出:

    <?= Html::encode($target) ?>
    

    我们来访问http://localhost:8999/site/say试试,不出意外这时你看到的是这样的:

    替代文字

    然后我们再来访问 : `http://localhost:8999/site/say?target=少年,还是用Yii吧

    替代文字

    虽然说在这里演示用中文不太和谐,但是没办法,我得安利一下各位少年,上手Yii2吧。

    第一篇先写到这里了吧,下一篇打算再说说Yii2MVC,Fomrs 和Layouts这几个知识点。

    Happy Hacking

    源码会放在Github:https://github.com/JellyBool/helloYii

  • 相关阅读:
    爬虫 高性能
    cmder 神器 +curl
    Scrapyd
    adb ( Android Debug Bridge)
    java 并发(五)---AbstractQueuedSynchronizer(4)
    java 并发(五)---AbstractQueuedSynchronizer(3)
    java 并发(五)---AbstractQueuedSynchronizer(2)
    java 并发 (四) ---- 并发容器
    java 并发(五)---AbstractQueuedSynchronizer
    java 并发(三)---Thread 线程
  • 原文地址:https://www.cnblogs.com/grimm/p/5423074.html
Copyright © 2020-2023  润新知