当前位置:首页 » 网页前端 » yii2前端模板
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

yii2前端模板

发布时间: 2022-08-04 22:15:58

① 安装codeception需要安装yii2吗

当 Yii框架仍处于 RC(候选版)阶段时,我们 对它进行过报道,那时它刚刚全面达到候选版本阶段,(现在它已经发布了正式版本)我们感觉是时候再次讨论这个话题:选择 Yii框架的原因。 1. 易于安装 对于web开发人员来说,时间就是金钱,没有人愿意把宝贵的时间花在一个复杂的安装和配置过程。 安装处理使用Composer。如果你想要描述安装的过程,Sitepoint最近发表了一篇很棒的文章,在这儿。我倾向于使用基本的应用程序模板,即使我的网站有一个单独的前端和后端组件。相反,我选择使用一个模块给我的网站的后台部分。(Yii模块是最好的描述,小应用驻留在主应用程序里面)。 注意:许多目录的引用在后面的示例中,从简单的模板去使用目录的结构。 2. 利用现代技术 Yii是一种纯粹的面向对象框架,并且利用PHP的一些更高级的功能,包括延迟静态绑定,SPL类和接口,和匿名函数。 所有的类名称空间,它允许你利用PSR-4兼容的自动装载器。这意味着包括Yii 的 HTML的帮助类一样的简单: use yii\helpers\Html; Yii 也允许你定义别名来帮助简化你的命名空间。 在上面的示例中, use 语句将加载一个类定义,默认放的目录 /vendor/yiisoft/yii2/helpers. 这个别名在BaseYii 类在第79行中定义: public static $aliases = ['@yii' => __DIR__]; 框架本身的安装使用Composer,是其扩展。 甚至出版的过程扩展一样容易创建自己的 composer.json,并在Github托管代码,列出您的扩展在Packagist。 3. 高度可扩展性 Yii 看起来就像一件样式很棒的西装,但也非常容易根据你的需求来进行定制. 实际上框架的每一个组件都是可以扩展的。一个简单的示例就是添加一个唯一的主体ID到你的视图上。 (你如果对自己为什么可能会想要这样做感兴趣的话,可以看看这篇 文章). 首先,我会在我的 app\components 目录相面创建一个名为 View.php 的文件, 并加入如下代码: namespace app\components; class View extends yii\web\View { 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 . '"' : ''; } } 然后,在我的主布局文件 (app\views\layouts\main.php) 中,我会将如下代码添加到我的HTML中body标签的里面: <body <?=$this->BodyIdAttribute?>> 而最后,我会加下列的代码添加到我的主配置文件中,以便让Yii知道如何去使用我扩展的视图类,而不是它自己默认的那个类: return [ // ... 'components' => [ // ... 'view' => [ 'class' => 'app\components\View' ] ] ]; 4. 鼓励测试 Yii 框架和Codeception框架紧密地集成在一起。 Codeception 是一个优秀的PHP测试框架,它帮助简化创建单元测试、功能验收测试的流程。 条件是你在为所有的应用程序编写自动化的测试用例,对吧? Codeception 扩展使得在测试时配置应用程序变得简单。 测试应用程序,只需编辑一个已存在的文件/tests/_config.php。例如: return [ 'components' => [ 'mail' => [ 'useFileTransport' => true, ], 'urlManager' => [ 'showScriptName' => true, ], 'db' => [ 'dsn' => 'mysql:host=localhost;dbname=mysqldb_test', ], ], ]; 使用上面的配置,需要注意下面一些事项: 在功能验收测试期间,所有发送的邮件都会被写入一个文件中保存,而非真正地发送出去。 测试时URL的格式是index.php/controller/action,而非/controller/action。 测试时需要使用测试数据库,而非生产数据库。 Codeception 内部存在一个特殊的模块,专门用于Yii 框架测试。 它在TestGuy类里添加了一些方法,保证功能测试时 Active Record(Yii 的ORM)可以正常工作。 例如,如果你想查看注册表单是否成功地创建了一个用户名为testuser的User对象,你可以这样做: $I->amOnPage('register'); $I->fillField('username', 'testuser'); $I->fillField('password', 'qwerty'); $I->click('Register'); $I->seeRecord('app\models\User', array('name' => 'testuser')); 5. 简化的安全方案 安全性是任何web应用的重要组成部分,幸运的是Yii有许多很棒的特性能帮你减轻负担. Yii 带来了一个安全性 应用程序组件,它暴露了一些可以帮助可以用来创建一个更加安全的应用程序的方法. 其中一些相对而言更加有用的方法有: generatePasswordHash: 从一个密码和一个随机的盐值生成一个安全的哈希值. 这个方法会为你创建一个随机的盐值,然后使用PHP的 crypt 函数来根据所提供的字符串创建一个哈希值. validatePassword: 这是一个可以同 generatePasswordHash 搭配使用的方法, 并可以让你检查用户提供的密码是否同你存储的哈希值匹配. generateRandomKey: 可逆让你创建一个任何长度的随机字符串 Yii 会自动对所有非安全 HTTP 请求方法 (PUT, POST, DELETE) 的可用CSRF令牌进行检查, 并将在你使用 ActiveForm::begin() 方法创建你的开发表单标签时生成并输出一个令牌值. 这个特性可以通过编辑你的主配置文件,包含下面的代码来禁用: return [ 'components' => [ 'request' => [ 'enableCsrfValidation' => false, ] ]; 为了堤防跨站脚本XSS的攻击,Yii提供了另外一个叫做 HtmlPurifier 的辅助类. 这个类有一个名为 process 的静态方法, 而它将会使用同名的 流行过滤器库 来过滤你的输出. Yii 也包含了随时就绪的用于用户认证和授权的类. 授权被分成了两个类型: ACF (访问控制过滤器) 和RBAC (基于角色访问的控制). 两者中更加的是 ACF, 其实现是通过在你控制器的添加下列的 行为 方法: use yii\filters\AccessControl; 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' => ['@'] ] ] ]; } // ... } 上面的代码会告诉 DefaultControllerto 让访客用户访问login和view的action, 而不是create这个action. (问号 ? 是匿名用户的别名, 而 @ 表示的是已经被授权的用户). RBAC 是一个可以在应用程序中指定那些用户可以执行特定的动作的强大方法. 它涉及为你的用户创建角色,为你的app定义权限,并然后为他们预期的角色使用这些角色. 如果你想要创建一个审核员(Moderator)的角色就可以使用这个方法, 并可以让所有分配到这个角色的用户可以对文章进行审核. 你也还可以使用 RBAC 定义规则, 它可以让你在特定条件下针对你应用程序的某些方面进行授权. 例如,你可以创建一个规则让用户可以编辑他们自己的文章, 而不能修改由其他人创建的文章. 6. 缩短开发时间 大多数的项目都包含了重复的任务,没有人想把时间浪费在这些重复工作上面。Yii 提供了一些工具来帮助你在这些任务上花费更少的时间,把大多数时间都用在定制应用来满足你客户的需求上。 其中最强大的一个工具就是“Gii”。Gii是一个基于web脚手架代码工具,它可以让你快速的创建一个代码模板如下所示: Models Controllers Forms Moles Extensions CRUD controller actions and views Gii是高度可配置的。你可以设置它只从一个特定的环境加载。简单的编辑web配置文件如下: if (YII_ENV_DEV) { // ... $config['moles']['gii'] = [ 'class' => 'yii\gii\Mole', 'allowedIPs' => ['127.0.0.1', '::1'] ] } 这确保了Gii只有设置了Yii的环境变量为(development)开发环境时才加载,并且只在通过本地环境访问的时候加载。 现在,让我们来看看模型的生成: 表格名称使用了一个响应敲击就会显示的小窗口来尝试给出对你的模型将会关联的表格的猜测, 并且所有的域值输入框都会有一个翻转效果显示出来的提示,提醒你如何完成对它们的填写. 你可以在让Gii输出代码之前先进行一下预览, 而所有的代码模板都是完全可定制的. 也有几个可以用于数据库迁移、消息翻译(I18N)以及生成用于自动化测试数据库道具的命令行辅助工具. 例如,你可以使用如下代码创建一个新的数据库迁移 文件: yii migrate/create create_user_table 这将会在 {应用目录}/migrations 创建一个新的看起来像下面这样的迁移模板: <?php use yii\db\Schema; class m140924_153425_create_user_table extends \yii\db\Migration { public function up() { } public function down() { echo "m140924_153425_create_user_table cannot be reverted.\n"; 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/down 7. 很容易通过调整获得更好的性能 所有人都知道一个慢吞吞的网站会造就许多心怀不满的用户, 因此Yii为你提供了一些工具来帮助你让应用程序获得更快的速度. 所有的Yii缓存组件都扩展自yii/caching/Cache, 它能让你在使用一个公共API的同时选择任意某一个缓存系统. 你甚至可以同时注册多个高速缓存组件. Yii 当前支持数据库和文件系统缓存, 还有 APC, Memcache, Redis, WinCache, XCache 以及 Zend Data Cache. 默认情况下,如果你是使用的 Active Record ,那么 Yii 会额外运行一个查询来确定生成你模型的表的结构. 你可以通过像下面这样编辑你的主配置文件,对你的应用程序进行设置,以缓存这些表结构: return [ // ... 'components' => [ // ... 'db' => [ // ... 'enableSchemaCache' => true, 'schemaCacheDuration' => 3600, 'schemaCache' => 'cache', ], 'cache' => [ 'class' => 'yii\caching\FileCache', ], ], ]; 最后,Yii有一个命令行工具可以便于对前端字段进行缩小化. 简单地运行下面的命令就可以生成一个配置模板: ./yii asset/template config.php 然后编辑该配置,指定你想要用那些工具来执行缩小化操作(比如. Closure Compiler, YUI Compressor, 或者 UglifyJS). 生成的配置模板如下所示: <?php return [ 'jsCompressor' => 'java -jar compiler.jar --js {from} --js_output_file {to}', 'cssCompressor' => 'java -jar yuicompressor.jar --type css {from} -o {to}', 'bundles' => [ // 'yii\web\YiiAsset', // 'yii\web\JqueryAsset', ], 'targets' => [ 'app\config\AllAsset' => [ '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' ] ] 注意: 你需要手动下载并安装这些额外的工具.

② yii2如何引入html模板

yii框架支持模板引擎的,前后端分离可以通过这个来做,这个我只能提示你一下了,具体的我就不清楚了,因为我不喜欢模板引擎,没有用过,所以不能帮助你更多,看官方文档最好。

③ yii2 assets目录给什么权限

首先在你的布局文件中,看看你导入的asset类是什么 一般是放在assets里面的那个类 这个类以来jQuery和bootstrap,继承 yii\web\AssetBundle类 然后重新覆盖父类的jsOptions属性,比如: public $jsOptions = [ 'position'=>View::POS_HEAD ]
不会自动清除,为什么要生成这样的缓存文件?这个问题问的不对,因为这些不是缓存。
composer大行其道的时代,有很多人实现某一个特殊功能打包发布,开发者只要通过composer拿回来就可直接使用。
比如yii2-admin,它是一套yii权限管理的模块,自带了前端界面,他的资源放在自己的源代码目录下,当开发者使用时,yii将这个模块用到的前端资源发布到web/assets目录下,而不用开发者做其他额外的工作。
这些发布的资源是可以被压缩的,使用yii的 assets 命令,详情可以看这里assets

④ 前端想学php,接触什么框架好thinkphpyii2

这个看个人吧……可以先尝试一个thinkPHP 框架,算入门学习适应下,后面这些框架都是封装了各种函数让你更好的编程。

CI框架也还可以,我第一个接触的就是这个。

⑤ 如何修改yii2 admin2的前端页面

用户表加个权限字段啊1 2都可以 1是超管 2普通管理 aaa登录的时候查询权限 如果权限是2直接在页面写判断弹出无权限就好了啊

⑥ yii2里 前端用vue写 路径怎么配置

前后端分离之后,后台语言的选择一下子多了,只要能处理请求,返回JSON就可以了。
不过据说PHP是世界上最好的语言,所以本教程选的是PHP,当然,站在巨人的肩膀上,选个好用不浮夸的框架也是必要的,不然重复发明轮子会占用很多玩耍的时间,不利于身心健康。

⑦ web app前端能用yii2开发吗



<?php

namespace appassets;

use yiiwebAssetBundle;

class AppAsset extends AssetBundle
{
public $basePath = '@webroot';
public $baseUrl = '@web';
public $css = [
'css/site.css',
];
public $js = [
];
public $depends = [
'yiiwebYiiAsset',
'yiiootstrapBootstrapAsset',
];
}

其中项目中公用的css 和 js 可以分别定义在css,js中,对应路径也支持@web等别名。

使用资源包

在布局layout/main.php(默认,可以定义其他布局文件,然后在对应的controller中定义$layout = ‘xxx’)中,

use appassetsAppAsset;
AppAsset::register($this); // $this 代表视图对象

加载其他资源
但是如果某个视图需要额外加载某个资源的话,可以在视图中单独加载,这里只是针对布局中使用的资源配置。具体方法如下:

在AppAsset.php中定义两个方法:

//定义按需加载JS方法,注意加载顺序在最后
public static function addScript($view, $jsfile) {
$view->registerJsFile($jsfile, [AppAsset::className(), 'depends' => 'appassetsAppAsset']);
}

//定义按需加载css方法,注意加载顺序在最后
public static function addCss($view, $cssfile) {
$view->registerCssFile($cssfile, [AppAsset::className(), 'depends' => 'appassetsAppAsset']);
}

然后在视图中,直接调用加载即可

AppAsset::addCss($this,'/css/xxx/xx.css');
AppAsset::addScript($this,'/js/xx/xx.js');

需要注意的是加载顺序。
当然也可以不在AppAsset.php中定义这两种方法,直接在视图中调用:

$this->registerCssFile('/css/xx/xx.css', [AppAsset::className(), 'depends' => '']);

资源依赖
在资源包中的$depends属性,是用来定义抵赖关系的,比如在AppAsset.php中我们定义:

public $depends = [
'yiiwebYiiAsset',
'yiiootstrapBootstrapAsset',
];

就说明依赖YiiAsset和BootstrapAsset,这两个资源包是框架定义好的,我们可以看下具体内容就明白了

<?php
namespace yiiweb;

class YiiAsset extends AssetBundle
{
public $sourcePath = '@yii/assets';
public $js = [
'yii.js',
];
public $depends = [
'yiiwebJqueryAsset',
];
}

这里可以看到定义的是sourcePath,@yii/assets指的的/vendor/yiisoft/yii2/assets这里的路径,会发现这里恰好有js中定义的yii.js,但是由于这里的目录是不能供web访问的,所以框架会根据这里的配置,将这里的资源发布到web/assets/下面(或者建立链接的方式,具体可以配置,这里不详细描述)。

在来看$depends,这里定义了依赖JqueryAsset,其实就是依赖jquery.js的,具体也可以看JqueryAsset就会明白。

class JqueryAsset extends AssetBundle
{
public $sourcePath = '@bower/jquery/dist';
public $js = [
'jquery.js',
];
}

所以根据依赖,框架会先加载jquery.js,然后是yii.js,最后是视图加载的js。

⑧ Yii2的前端写法好另类

毫无意义,以后的维护会把人逼疯