use yiihelpersHtml;Yii 也允许你定义别名来帮助简化你的命名空间。 在上面的示例中, use 语句将加载一个类定义,默认放的目录 /vendor/yiisoft/yii2/helpers. 这个别名在BaseYii 类在第79行中定义:
public static $aliases = ["@yii" => __DIR__];框架本身的安装使用Composer,是其扩展。 甚至出版的过程扩展一样容易创建自己的 composer.json,并在Github托管代码,列出您的扩展在Packagist。
namespace appcomponents; class View extends yiiwebView { public $bodyId; /* Yii allows you to add magic getter methods by prefacing method names with "get" */ public function getBodyIdAttribute() {return ($this->bodyId != "") ? "id="" . $this->bodyId . """ : "";} }然后,在我的主布局文件 (appviewslayoutsmain.php) 中,我会将如下代码添加到我的HTML中body标签的里面:<body <?=$this->BodyIdAttribute?>>而最后,我会加下列的代码添加到我的主配置文件中,以便让Yii知道如何去使用我扩展的视图类,而不是它自己默认的那个类:
return [// ..."components" => [// ..."view" => ["class" => "appcomponentsView"]]];4. 鼓励测试
return ["components" => ["mail" => ["useFileTransport" => true,],"urlManager" => ["showScriptName" => true,],"db" => ["dsn" => "mysql:host=localhost;dbname=mysqldb_test",],],];使用上面的配置,需要注意下面一些事项:
$I->amOnPage("register");$I->fillField("username", "testuser");$I->fillField("password", "qwerty");$I->click("Register");$I->seeRecord("appmodelsUser", array("name" => "testuser"));
validatePassword: 这是一个可以同 generatePasswordHash 搭配使用的方法, 并可以让你检查用户提供的密码是否同你存储的哈希值匹配.
generateRandomKey: 可逆让你创建一个任何长度的随机字符串
Yii 会自动对所有非安全 HTTP 请求方法 (PUT, POST, DELETE) 的可用CSRF令牌进行检查, 并将在你使用 ActiveForm::begin() 方法创建你的开发表单标签时生成并输出一个令牌值. 这个特性可以通过编辑你的主配置文件,包含下面的代码来禁用:
return ["components" => ["request" => ["enableCsrfValidation" => false,]];为了堤防跨站脚本XSS的攻击,Yii提供了另外一个叫做 HtmlPurifier 的辅助类. 这个类有一个名为 process 的静态方法, 而它将会使用同名的 流行过滤器库 来过滤你的输出.
use yiifiltersAccessControl; class DefaultController extends Controller {// ...public function behaviors() {return [// ..."class" => AccessControl::className(),"only" => ["create", "login", "view"],"rules" => [["allow" => true,"actions" => ["login", "view"],"roles" => ["?"]],["allow" => true,"actions" => ["create"],"roles" => ["@"]]]];}// ...} if (YII_ENV_DEV) {// ...$config["modules"]["gii"] = ["class" => "yiigiiModule","allowedIPs" => ["127.0.0.1", "::1"]]}这确保了Gii只有设置了Yii的环境变量为(development)开发环境时才加载,并且只在通过本地环境访问的时候加载。
yii migrate/create create_user_table这将会在 {应用目录}/migrations 创建一个新的看起来像下面这样的迁移模板:
<?php use yiidbSchema; class m140924_153425_create_user_table extends yiidbMigration{public function up(){ } public function down(){echo "m140924_153425_create_user_table cannot be reverted.
"; return false;}}如此假如说我想要想这个表添加一些列. 我就只要简单的将下面的代码添加到 up 方法中:public function up(){$this->createTable("user", ["id" => Schema::TYPE_PK,"username" => Schema::TYPE_STRING . " NOT NULL","password_hash" => Schema:: TYPE_STRING . " NOT NULL"], null);}然后为了确保我可以进行迁移的逆向操作,我就会编辑down方法:public function down(){$this->dropTable("user");}创建表格可能就是简单的设计到在命令行上运行一个命令:./yii migrate而删除表格是下面的这个命令:
./yii migrate/down7. 很容易通过调整获得更好的性能
return [// ..."components" => [// ..."db" => [// ..."enableSchemaCache" => true,"schemaCacheDuration" => 3600,"schemaCache" => "cache",],"cache" => ["class" => "yiicachingFileCache",],],];
./yii asset/template config.php然后编辑该配置,指定你想要用那些工具来执行缩小化操作(比如. Closure Compiler, YUI Compressor, 或者 UglifyJS). 生成的配置模板如下所示:
<?phpreturn ["jsCompressor" => "java -jar compiler.jar --js {from} --js_output_file {to}","cssCompressor" => "java -jar yuicompressor.jar --type css {from} -o {to}","bundles" => [// "yiiwebYiiAsset",// "yiiwebJqueryAsset",],"targets" => ["appconfigAllAsset" => ["basePath" => "path/to/web","baseUrl" => "","js" => "js/all-{hash}.js","css" => "css/all-{hash}.css",],],"assetManager" => ["basePath" => __DIR__,"baseUrl" => "",],];接下来,运行这个控制台命令以执行压缩.yii asset config.php /app/assets_compressed.php最后,修改你的web应用程序配置文件,使用压缩后的资源.
"components" => [// ..."assetManager" => ["bundles" => require "/app/assets_compressed.php"]]注意: 你需要手动下载并安装这些额外的工具.