谁一开始就是大神?

PHP 第26页

PHP

手机短信验证码问题[2.0]

WendyJames阅读(58)

参考了https://getyii.com/topic/221
但是我没搞明白:’on’ => [‘default’, ‘login_sms_code’]]什么含义? ‘on’ => [‘login_sms_code’]]?

        ['mobile', 'required', 'on' => ['default', 'login_sms_code']],
        ['mobile', 'integer', 'on' => ['login_sms_code']],
        ['mobile', 'match', 'pattern' => '/^1[0-9]{10}$/', 'on' => ['default', 'login_sms_code'],      'message' => '{attribute}必须为1开头的11位纯数字'],
        ['mobile', 'string', 'min' => 11, 'max' => 11, 'on' => ['default', 'login_sms_code']],
        ['mobile', 'unique', 'targetClass' => '\common\models\User', 'message' => 'This mobile has already been taken.'],
        
        ['smsCode', 'required','on' => ['default','login_sms_code']],
        ['smsCode', 'integer','on' => ['default','login_sms_code']],
        ['smsCode', 'string', 'min'=>6,'max' => 6,'on' => ['default','login_sms_code']],
        ['smsCode', 'required','requiredValue'=>$this->getSmsCode(),'on' => ['default','login_sms_code'],'message'=>'手机验证码输入错误'], 

    ];

yii\base\Model里面有个scenario的概念,中文翻译过来就是‘情景模式’的意思;以你的代码为例,
1.$model->setScenario(‘login_sms_code’);
2.$model->validate();
3.这时你的这个验证才会生效,不然这个验证是不会生效的
4.补充一点,默认的scenario是’default’
on 是场景 看文档吧

YII2保存html单选多选内容[2.0]

CindyLion阅读(60)

现在在做一个项目,由于一个index页面需要切换不同的内容,所以把内容分开保存在几个页面,再用ajax引入,但是这几个页面就用不了activeform的组件了,所以直接用html写的,那么html写的单选框,多选框,怎么进行保存呢。

我感觉你的思路不对,既然是切换页面,那就给url传参数把,比如设置一个参数type
如果是1 就让它redirect到 属于1的那个页面 比如说是index1.php
以此类推
为啥就用不了activeform?
html写的内容,直接读取值存数据库,有困难?
即使不用activeform,用html写,直接通过form标签提交数据进行保存就好,不清楚问题点在哪,如果是要获取单个数据,直接用js或jquery获取输入框内容就好了。
方向错了,为什么要用AJAX引入页面呢?include啊

错误信息显示的问题[2.0]

dmlovely阅读(58)

mysql操作的时候,如果操作有异常,例如表名没找到,yii会自动跳转到错误显示页面,如图:1.png
而且下面还会有详细的错误信息。
但是我又不想暴露有关自己数据库里的一些详细信息,
可以设置错误的显示方式吗,如何设置,比如不直接暴露sql语句的错误。

默认只有开发环境才会显示,生产环境不会显示具体错误信息。
在初始化时有选择,你部署到生产环境时选择生产环境就行。
再web/index.php 中将debug设置为 false即可。
一个是楼上 ,还有就是你看下配置文件的errorHandler这个配置项,然后看实现具体function和页面你就知道咋弄了
自己重写 site/error
很简单的。
在文件入口处把开发环境设置成false

逐行打印代码为啥在controller里不起作用?[2.0]

ecyelephant阅读(56)

如题,下面的代码在单纯的php文件可以实现逐行打印效果,但是放到controller的action里面,就不起作用了,哪位大神遇到过?如何解决的?

for ($i = 0; $i < 3; $i++) {
    echo "当前时间:" . date("Y-m-d H:i:s") . "<br>";
    ob_end_flush();
    flush();
    ob_start(function($buffer) {
        return $buffer . str_repeat(' ', max(0, 4097 - strlen($buffer)));
    });
    sleep(1);
}

我测试了没有问题啊
1.jpg
把下面几行拿掉,直接echo 有效吗?感觉ob那部分有点问题。

Url怎么从backend应用生成frontend的链接[2.0]

Wendyfans阅读(59)

如题,现在只知道一个文章的id,想通过Url::to的方法从backend生成一个frontend的链接。
并且遵循frontend的路由规则,如何实现?

正好有一篇文章是写这个的,可以看下。
http://yiilib.com/topic/736/Yii 2.0 使用UrlManage在后端生成前端URL
方法比较简单。
说一个直接的办法:先在 common/config/bootstrap.php 内追加两个 alises:
之后就可以在 backend 生成 frontend url 了:
至于你说的“遵循 frontend 的路由规则”,不用管它,因为生成的 URL 是前台的链接,routing 的时候自然去 frontend 内的 url rules 去匹配。

yii2.0高级中backend的用户注册[2.0]

CindyCherry阅读(57)

在backend中注册用户,但是backend中没有这个功能,frontend有这个功能,怎么才能在backend使用frontend的signup?谢谢

你的意思是后台使用前台的注册方法?
方法1:拷贝一份过来!需要启动db2!
方法2:直接用呗、就是返回路径的时候做个判断。不知道你是那种情况!
……和frontend一样,不久okay啦
从frontend copy过来就行了。
你这个要做代码移植手术
看代码阿。
真正的理解代码了,就不是代码放在哪的问题了

同一账号,如何实现另一用户登陆后,之前用户自动下线[2.0]

HaHLion阅读(64)

如题

先感谢各位大佬了!

在loginAfter()时在数据库中存一个最新的登录码,把这个登录码存到客户端的cookie(用session也可以)中,每次访问时比对一下,不一样,则自动logout(),不过要小心,这种自动logout()的有客户会感觉很不爽。
yii2中的登录前登录后的session值都是会变得。需要注意这一点。友情提醒
特意写了一个例子,你看看吧
http://www.codegong.com/document/71.html

gii生成的crud访问404[2.0]

Bobhope阅读(55)

今天在学习yii框架,按照文档上自动生成的crud,访问出现404,其他自己写的都OK。
查看源代码,发现自动生成的controller与自己写的controller差别只有引用,自动生成的引用yii\web\Controller,自己写的是yii\base\Controller。

其他没有发现什么不一样的。请各位大神帮忙看下,都搞一天了

红框内是自动生成的代码。

是在basic模板上写的。

无标题.png

浏览器输入的URL是tb-info/index?

Yii2csrftoken验证问题[2.0]

Wendynice阅读(61)

Yii2 ajax请求的时候 headers里面自带了x-csrf-token ,而提交表单的时候headers里面却没有x-csrf-token,有大神能解答为什么吗??

ajax请求的时候它把csrftoken值放到了header里面,当然验证的时候它也会去header里找这个值得,这个你自己写ajax请求也可以这么做。post的时候Yii2默认会把这个值当一个hidden字段生成在表单里,验证的时候也去表单字段里找。
<?= Html::csrfMetaTags() ?> 这个加到layout文件里面
ajax也不用自己写了,自己添加到head头部了
学习了,赞

关于yii2\web\Viwe[2.0]

coolsea阅读(57)

请问一下各位大神,在YII2中,yii2\web\Viwe,即在视图中的$this,我需要加写东西,就写了个BaseView类继承View类,那么我怎么使用BaseView而不是原来的View呢

方法1:在配置文件里面component里面配置
方法2:重写你的controller文件的getView()方法
方法3:或者在你需要使用的action里面调用

登录

找回密码

注册