谁一开始就是大神?

PHP 第112页

PHP

$this->save()的参数问题

Jackpony阅读(110)

$this->save() 的参数有 True 和 False,请教他们都代表什么意思啊?

true 验证数据,false 不验证数据
追踪代码是:true 插入 false 更新
这个, API 的注释已经相当清楚了,true 验证数据, 会调用 validate() 方法,false 不验证数据,直接存储,至于是更新数据,还是插入数据,就看 $this->getIsNewRecord() 的返回结果了,跟 save 方法的参数没有丁点关系
save 方法的定义
采纳了一个明显错误的答案……

Yii2原生SQL+GridView分页问题

acgStone阅读(93)

在sql比较复杂,用orm不好实现的情况下需要写原生sql还要用GirdView展现数据;
我的思路是这样的(已实现):

//Controller

$sql = 'select a.id,b.name,c.age from a,b,c where xxx';  
$q = Yii::$app->db2->createCommand($sql)->queryAll();  
$pages = new Pagination([
            'totalCount'=>count($q),
        ]);
$list = Yii::$app->db2->createCommand($sql." limit ".$pages->limit." offset ".$pages->offset."")->queryAll();  
 $dataprovider = new ArrayDataProvider([
       'allModels' => $list,
 ]);  
return $this->render('circle',[
     'dataprovider'=>$dataprovider,
      'pages'=>$pages,
]);  

//View

<?= GridView::widget([  
    'dataProvider'=>$dataprovider,  
    //不显示gridview的分页,在这指定totalCount属性不好使(问题就在这)  
    'pager'=>[
        'options'=>['class'=>'hidden']
    ],
    'columns'=>[
        //此处略去n多字
    ],
]) ?>  
//单独展示分页  
<?= LinkPager::widget([
    'pagination'=>$pages,
]) ?>

虽然这样能实现我想要的结果,但是总感觉姿势不对.求大神指点

视图
为了避免你误人子弟我只好出手了
我也出手了,学习….
为什么我的分页出不来??
那么,我也给个优雅的回答
controller:
视图
又涨姿势了

怎么把activeform生成的相关的js全给删除?

Dmsuper阅读(91)

Yii2.0 ActiveForm
我就只生成表格,和表格相关的自动生成js我全不要,怎么搞?

···
<?php $form= ActiveForm::begin([
])
那就不要用ActiveForm,自己写table吧。
那样的话,就需要去改动源码才行了
啊 我不是故意弄乱格式的

关于在网页中输出表格的MVC实现

Ellieyak阅读(100)

用yii框架如何在前台输出一个表格,表格内容为数据库的表的内容,应该分别在M,V,C目录中如何写,就是面向过程的具体代码会写,面向对象的就不知道代码该分别写在哪个目录中了,求大神指点,谢谢!

官方的blog就是一个完整的例子,看完你就明白了。

一个GridViewjs的问题

Kindapple阅读(106)

问题是这样的:一个GridView列表,使用了CCheckBoxColumn,允许多选。比方说数据有三条A、B、C;其中C的checkbox被我设置为了disabled,但是通过表头的全选按钮,ABC三条数据还是都能被选中….但是我不想C被选中….

jQ学的不是很好。看了下js源码,但是不知道怎么改。jquery.yiigridview.js的166行~

有jQ学的比较好的可以帮忙看看

这个不需要改jquery.yiigridview.js吧 , 即使被勾中了,disbaled属性还是有的。所以你可以在 jquery.yiigridview.js 脚本执行之后再添加一个checkbox的click 监听即可。大致这样(一定要保证最后执行):
建议你判断一下,不用disabled,直接不加checkbox,也就是判断它不需要可选时就不加checkbox,这样可以少改一些代码。

yii1.0上传文件bug

Swiftelephant阅读(91)

我实现的上传文件,在本地以及apache服务器上面都正常,换了一台nginx之后就报错了、、、

2014/09/19 18:26:49 [error] [exception.CException] exception ‘CException’ with message ‘缺乏暂存目录来储存已上传的文件 “(1).jpg”.’

这是报错内容

会不会是上传存放的文件夹不存在或没权限

gridview中如何显示码表中的数据

Oldnice阅读(91)

序号 | 销售单号 | 销售类型 | 状态 | 日期

1 123456 省内销售 执行 2014-09-22

如上面的数据,销售类型(01:省内销售;02:省外销售)和状态(01:执行;02:终止)对应的都是码表中的数据,那么在yii中如果使用gridview来显示这个数据,销售类型和状态如何进行关联?

视图:
控制器
试试这个。
楼上正解,学习了,这个方法好
我是这样用的,缺点是,不支持过滤

YII2表单验证问题:注册时ajax验证手机号唯一

Wendytom阅读(85)

情景:我在验证规则里写了手机号码唯一,同时ajax验证也开启了,但是只有其他的验证能在ajax验证(比如手机号码格式,密码位数或者两次密码时候一致等等,只有这个唯一值没法ajax验证o(╯□╰)o)。
rules代码

public function rules()
    {
        return [
            [['password','re_password','new_password'], 'string','min'=>6, 'max' => 16,'message'=>'{attribute}位数为6至16位'],
            [['phone'], 'unique','message'=>'{attribute}已经被占用了'],
            ['phone','match','pattern'=>'/^1[0-9]{10}$/','message'=>'{attribute}必须为1开头的11位纯数字'],
            [['phone','password'],'required','on'=>'login','message'=>'{attribute}不能为空'],
            ['re_password','compare','compareAttribute'=>'password','message'=>'两次密码不一致'],
        ];
    }

难道本屌还得自己写js代码?

应用程序初始化的用户名唯一验证的代码如下:
['username', 'unique', 'targetClass' => '\common\models\User', 'message' => '此用户名已经被使用。'],
应该加上targetClass。
对于验证,yii是不是按照那个rules里面数组从上往下的顺序验证的? 如果某个字段未验证通过,后面的字段就不会验证了,是这样?
因为可能需求,比如我的手机验证通过后,才能验证该手机所发的验证码是否正确?如果手机都不正确,验证手机发送的验证码是否正确就会出问题!

Yii2的Redis操作问题

Leohappy阅读(83)

不知道如何使用redis的hmset方法…
代码如下:
Yii::$app->redis->hmset('user:1',['name'=>'joe','solary'=>2000]);

报错如下
mb_strlen() expects parameter 1 to be string, array given

hash 数据的操作刚我们想象的不一样, 这么说吧,yii\redis\Connection 操作的 redis 的数据参数,没有数组,也没有数字的概念,只有字符串,Connection 是一个一个发送数据的,看 hmset 的参数说明
所以 Yii::$app->redis->hmset('user:1',['name'=>'joe','solary'=>2000]);
其实应该是 Yii::$app->redis->hmset('user:1', 'name', 'joe', 'solary', 2000); 这么调用的
当然你也可以通过
Yii::$app->redis->executeCommand('HMSET', ['user:1', 'name', 'joe', 'solary', 2000]) 这么调用
直译报错信息的话应该是mb_strlen()的第一个参数应该是一个字符串结果给了一个数组 所以需要再次确认是不是hmset的存值引起的报错 $redis->hmset(‘test’, array(‘name’ =>’joe’, ‘solary’=>2000))这个是不在Yii中redis的hmset使用方法 建议换种写法试试
好像在yii2.0.4中没有找到redis的相关操作类,怎么破???
yii2.0 如何安装配置redis?
我想问问 redis发布订阅怎么用,我使用订阅的时候也提示mb_strlen()给了个数组这种错误

登录

找回密码

注册