yii2 怎么设置网站logo
在/layouts/main.php中如下定义
我的为什么不行啊,还是yii自带的logo
已解决,谢谢
yii2 怎么设置网站logo
在/layouts/main.php中如下定义
我的为什么不行啊,还是yii自带的logo
已解决,谢谢
命名空间
比如yii2.0某个控制器里要调用系统自带的控制器
use yii/web/Controller
请问这个后半部分是路径吗?
但是我查了一下这个文件,它是在’XXX/yii2/web/controller’这个目录下,它自己里面写的命名空间是namespace yii/web
这个倒是和使用时是对应的,可是却不是路径啊,就算是路径应该也是yii2/web/ 但是我两边都改成yii2却是出现问题,麻烦哪位明白的朋友跟我说一下命名空间这一块,谢谢了
yii2的命名空间完全取决于别名!多了解一下别名,就知道具体是怎么自动加载的了。楼上几个木说到点上。
还可以参见一下这个地址:http://www.yiichina.com/tutorial/395 里面写的很详细。
命名空间 跟路径应该没啥关系吧,它想怎么命名就怎么命名。
yii2的命名空间是根据它文件自己的命名空间决定怎么调用的。比如:就像你说的,use yii/web/Controller,它是在XXX/yii2/web/controller这个目录下,它自己写的命名空间是namespace yii/web,那么在其他的控制器中调用的话,命名空间就是:它自己的命名空间,加上它是属于什么文件。比如:它是属于控制器的,那么调用时的命名空间就是:文件自己的命名空间/文件类型(Controller/Model)。你可以在仔细看看,或者你看看第三方类是怎么调用的,它们的命名空间是如何写的,自己再试试,就找到感觉了。
类似这样的
前台:http://www.demo.com/index.php
后台:http://www.demo.com/admin.php
我用的是该高级版,有front和backend两个模块,不会配置,求教!
你把www.demo.com所指向的目录配置到advanced目录下,
那么访问后台:http://www.demo.com/backend/web/index.php
访问到前台:http://www.demo.com/frontend/web/index.php
但是这样,url就比较长了,所以,你最好分配两个域名,比如后台域名为:backend.demo.com,然后这个域名目录直接指向到advanced/backend/web目录下,那么你访问的时候:http://backend.demo.com/index.php 就访问到后台
前台配置也类型,比如域名为frontend.demo.com,然后这个域名目录直接指向到advanced/frontend/web目录下,那么你访问的时候:http://frontend.demo.com/index.php 就访问到前台
生产环境中,这种方式用的也不少,一般把域名配置到公司首页,比如:www.demo.com,然后公司的管理后台用二级域名。
当然,还有其他的解决方案。看你习惯配置成哪种。
如果是本地环境,可以通过配置hosts文件,也可以通过端口来区分。
其实很好处理的,已经内置给你考虑周到了
debug出来的信息为什么有的重复,有的却不重复呢?? 我并没有将一个方法执行多次。
1
15:18:27.722 0.5 ms SELECT SELECT * FROM `config_items` WHERE (`name`='site_logo') AND (`categoryid`=1)
/var/www/html/1.php (83)
/var/www/html/index.php (78)
/var/www/html/RoomController.php (114)
[+] Explain
2
15:18:27.724 0.4 ms SELECT SELECT * FROM `config_items` WHERE (`name`='site_logo') AND (`categoryid`=1)
/var/www/html/1.php (83)
/var/www/html/index.php (78)
/var/www/html/RoomController.php (114)
![]()
系统里有好多关联操作,比如你进行一个操作时需要验证你是否已登录,是否是管理员等等.
Info::deleteAll('id>:id',array(':id'=>2));我要删除ID大于2的数据库数据 结果系统提示我未定义的变量!咋回事呀 Info是模型层的名字
Info::deleteAll(['>','id',2])
这样
1.$app=new yii\web\Application($config);
2.
class Yii extends \yii\BaseYii
{
}
以上的
yii\web\Application
yii\BaseYii
是什么意思呢?
命名空间:http://php.net/manual/zh/language.namespaces.rationale.php
有何作用:避免命名重复;顾名思义,我定义多个区域(命名空间),彼此之间的区域互不干扰,但同区域下却不能有相同的命名;
命名空间, 他类似于指向某个目录,该目录下不能有同名的文件(相同的命名空间下不能有同名的类)一开始是为了解决类名重复问题。
后来用做类自动加载
$demo=Info::find()->where(['id'=>2])->all();
$demo=array('name'=>$model->name,'E_mail'=>$model->email,'phone'=>$model->phone);
$info->save();
应该怎么改了 研究好久啦啊 运行不报错 数据库没有被更改 只是添加了一条空数据
已经解决 谢谢大家 真心感谢
若已经存在$id 记录,则更新,若不存在,则写入新数据记录。
比如说我有一个文章模型 title content auther 这三个字段是必填的
然后我还有一些其他的非必填字段 time isPublish 等等
我在\models\Post.php这个文件里面添加了规则
public function rules()
{
return [
[['title', 'content', 'isPublish'], 'required']
];
}
要求这三个字段必填
但是当我给其他属性赋值的时候(比如time字段)再 model->save()
只会保存验证的 三个字段 其余的字段全部都保存不进去 为什么
确实会保存不进去,一般不需要验证的,都加一个['time', 'safe'], 告诉yii这个属性是安全的,不需要验证
不批量赋值可以保存吧。。。
PHP刚学半年,yii2摸索了也有几个月了,。但有两个问题一直困扰我- –
在慕课网上和同学了解一点防范sql注入,xss攻击啥的,也没了解透。。就是照着做了几个例子。还了解了单例模式工厂模式什么的。然后他们会在用yii2做东西时,自己再写单例、工厂、自己写那几个防sql注入防什么攻击的函数进去。但我一直觉得没必要。。。故来求证下。
1,用yii2 输入框传过来的值 存入数据库、对数据库操作,还需要防范sql注入啥的嘛。因为我感觉噶- -,yii2作为这么吊的一个框架这些基本的安全问题 ,底层啥的肯定都已经考虑到这些问题了吧?
2,new 一个model的时候,还需要自己写单例模式嘛。。
求解
。。说实话,yii框架本身对post没有任何过滤的, \Yii::$app->request->post()就是$_POST,看源码就知道了。不过你用框架自带的ar操作数据库,where条件不用字符串形式是会自己防sql注入的。使用框架自带的activeForm来提交表单能防csrf攻击,所有显示用户输入内容的地方严格使用Html::encode和HtmlPurifier::process来过滤能防xss。
至于new model使用单例。。呵呵。
1、安全:YII确实已经做了防范,只要用yii给出的接收数据方法就能起到一定的安全防护作用。
如:
yii2接收post数据 \Yii::$app->request->post() ,方法会过滤或者转义一些字符, 但是也会有些人依然用原生的 $_POST[] 来获取,这样写就跟框架本身没什么关系,是搬码猿的问题。所以用YII自带的方法是有一定的安全作用的,不需要自己去写。
可能是人家想给看教程的同学讲解原理,才会自己写过滤方法, 不然你只知道YII安全,但是为什么安全?安全在哪里?有没有了解呢?
2、单例模式是为了节省系统资源,一个类只能实例化一个对象。最经典的就是 数据库连接类:程序执行一次,打开一个连接就够了。
在YII框架中自己写单例模式看情况而定,反正我是没写过。
人家的视频教程我觉得应该是要讲解原理的东西,而不是说让你们这样做。
当然 还有一种情况,你的水平极高,你发现yii框架过滤的不够安全,你可以自己写安全方法。
如题,请问yii2的assets bundle支持子域名访问吗?
配置 assetBundle 的 baseUrl