谁一开始就是大神?

PHP 第3页

PHP

页面引用报错[2.0]

JimLion阅读(57)

![T}AT}ZM[]8JW6VFYKM0CUR.png
88SAD)6`{GIWPF8SRW)%(}U.png
这个目录也是有的为什么还会保这个错误

要在 openapi/common/config/bootstrap.php 文件中最后加上一句话
同意楼上的

如何在配置文件里设置一次useyii\helpers\Url后,views视图的页面就不需要引入[2.0]

EllieFox阅读(56)

如何在配置文件里设置一次 use yii\helpers\Url后,views视图的页面就不需要再次引入了?

不可以,没有这种操作!
每次都要引入 确实很烦
你难道就不会变通一下:搞个自己的View基类,把yii\helpers\Url作为属性,那你的所有views视图就可以直接用Url属性了啊,不用再引入了啊
更高级一点,应该可以使用依赖注入容器\Yii::$container,给View组件注入Url属性,这样连基类都不用了,全自动了,更符合你所要求的autoload全局加载。 不过这仅仅是一个思路,我自己没试过
还有个思路:给View组件附加一个Behavior行为,行为里面你把Url作为属性,应该也是可以的。也可以全自动全局加载
我不是很确定了,你可以在layout层引入试试看。
应该是可以的,twig模板就实现了这个功能
在main.php配置:

‘globals’ => [

然后模板里就直接可以使用html::xxxx了,而且是可以在任何模板里

新建一个应用,结果走了别的应用的assets资源[2.0]

Markfans阅读(54)

RT,复制了frontend,命名为mobile,在mobile的config修改了一切frontend的配置为mobile,common/config里面也配置了应用的别名及路径,在模板调用的时候,模板正常,但是assets资源,却引用的是frontend下的assets资源,求教该怎么办

场景设置[2.0]

Anihope阅读(63)

$model->setScenario(‘update’); or $model->scenario = ‘update’;

这两个有啥不同,setScenario scenario 哪个是要被淘汰了吗

Yii框架下的对象属性都可以get和set
条条大路通罗马。
$model->setScenario(‘update’); or $model->scenario = ‘update’;
解释一下:
首先要说一下PHP的set和get,也是yii把php的set,get运用的很好的地方。
$model 是一个对象。 -> 是指向这个对象的属性,这个如果不懂就不用往下看了。
$model->setScenario(‘update’) 这样是正常的写法,因为在对象$model下面肯定设置了一个函数叫 setScenario。(具体这个函数在哪你可以自己找,不过肯定是存在的。)
就好比我们创建一个类,里面写setXxx(),然后new一个对象调用这个setXxx();说到这里,以上的都很好理解了。
重点是这里,$model->scenario 其实也没什么,也是yii把php的set,get运用的很好的地方(第二遍说了)
当执行$model->scenario($model对象没有这个函数 ,正常来说肯定报错,但是PHP回去执行魔术函数set)而在Yii里重写了这个set,大概意思就是public function __set(){Yii重写了这里,如果找不到scenario,这个函数,那他就会在前面加一个set。这样 ‘set’.$xxxx} 最后拼出来的就是setScenario,上面说了,setScenario这个是可定有的。所以,$model->scenario 这样执行,其实内部就是在 $model->setScenario(‘update’) 这样执行。

Yii::$app->request->userIP这个方法在什么路径。[2.0]

ACGyak阅读(50)

我发现这个方法其实是$_SERVER["REMOTE_ADDR"]封装的应该,

我通过CDN加速的,直接他就是获取的CDNIP了,而不是我的ip 我想改掉.

我用的是yii2 2.0.15 基础版

在 vendor\yiisoft\yii2\web\Request.php
QQ截图20180514142103.png

问个PhpStromIDE的问题。[2.0]

likelylovely阅读(54)

自定的 Yii::$app->user->identity->get***() 方法在编辑器里找不到定义,这些方法是挂载在 登陆的 User model里了。

或者你可以使用user 的关联模型自定义方法。例如User模型里定义了hasOne关联Store表。那么可以在Store模型里自定义方法,然后调用方式这样:
Yii::$app是应用的实例,调用组件的。例如 Yii::$app->user 是当前应用调用user组件
user 是模型
identity 是定义的接口也就是user模型必须要实现的接口,因为在调用login时注入进入的必须是 IdentityInterface,
最后返回的是关联的user对象(但是这个关联对象必须要实现接口)
store 是user的关联对象返回的是store对象
自定义方法()是store里面的一个函数,那可以可以store->自定义方法()调用了
讲解一下identity ,identity是身份的意思。是在登录的时候存储用户 。那它是怎么存储的呢?
Yii::$app->user的关联对象identity
Yii::$app这个都知道了吧,就是Yii应用实例 Yii::$app->user 是当前应用调用user组件(前面已经说了)
那它怎么怎么知道去调用user组件?因为在main.conf配置的:
仔细看发现了identity 这个词。但是他的全称是identityClass 这里定义的是身份验证信息调用使用的类是\Common\Models\User,也就是你的User模型,但是这个User模型时有要求的,必须实现implements IdentityInterface接口。然后程序运行后,会自动注册user组件(注册的是vendor/yiisoft/yii2/web/User.php)而不是你config配置的user,Config配置的user只是用来获取关联对象,然后可以这样使用了Yii::$app->user->identity ,但是执行identity的时候实际没有这个方法,应该会报错的,Yii使用了PHP的机制会去尝试执行getIdentity()。
上面说了,user是 vendor/yiisoft/yii2/web/User.php的组件,那么user->identity肯定是在vendor/yiisoft/yii2/web/User.php下面找是不是有getIdentity()。如果没找到,我直播吃翔。。。
然后在看 $this->renewAuthStatus();这个就是给identity复制user对象数据。
注意这两行:
这个findIdentity方法其实是接口 IdentityInterface 的具体实现。 (你可以试试点击鼠标进入这个findIdentity方法)他会跳到IdentityInterface接口里。所以说Yii::$app->user->identity->你写的方法()执行不了。因为你要在接口里定义.
因为 Yii::$app->user->identity 是实现 IdentityInterface 接口的。是使用IdentityInterface接口的契约规定,
public function login(IdentityInterface $identity, $duration = 0){}
传入的identity这个就是user查询结果对象,但是这个对象要符合依赖注入的规定。
而你的User model 里自定义了一个放,但是这个方法只是你model里的。登录后不会注册到这个方法,因为这个方法不符合login(IdentityInterface $identit)这个规定,它接收的是一个接口,你的Model要实现这个接口,也就是说,你要在接口里定义好方法,然后在user模型里写方法的具体实现。这样才能使用 Yii::$app->user->identity->get***()

求推荐较好的Yii2视频教程[2.0]

Tinafans阅读(57)

如题,求推荐较好的 Yii2 视频教程
最好全一点的,我要加深技术,先谢谢了

我是看这套教程学的,感觉还不错
http://www.sucaihuo.com/video/176.html
首推,魏曦教你学教程+慕课 开发仿京东商城,这两个学了之后至少就入门了。再推慕课 yii2进阶商城,yii2框架差不多东西就了解了
一起做项目,加强有没有兴趣,784248377 qq
每个人不太一样,需要看基础的视频可以看:https://www.imooc.com/learn/404
看我动态说说,找我私聊。
一个讲解很细致的Yii2 restful接口视频,值得一看https://edu.csdn.net/course/detail/26600

LIKE查询,前模糊,后模糊问题,请点[2.0]

dmelephant阅读(58)

$sql=new \yii\db\Query();
return $sql->from('table')
    ->select('id')
    ->where($where)
    ->all();
$where= array('like', 'id', $arr[0]);

上面的语句是 id like '%$arr[0]%'

那我想要的是 '$arr[0]%' 或者 '%$arr[0]' 怎么写 ,谢谢,

试试这样
$where= array('like', 'id', $arr[0].'%', false);

$dataProvider->getModels如何控制输出的字段?[2.0]

momodolphin阅读(54)

我现在做了一个前端接口,直接通过

$dataProvider = $searchModel->search($data);
$list = $dataProvider->getModels();

这样的方式获取的数据,但是直接返回前端的时候是包含表中所有字段的,有些还是敏感字段,有什么方法可以控制输出的字段吗?
不自己循环返回值。

$query->select(['id']); 如果这个设置 就是显示这个字段
fields方法控制输入字段

登录

找回密码

注册