谁一开始就是大神?

PHP 第113页

PHP

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

Oldnice阅读(28)

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

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

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

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

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

Wendytom阅读(27)

情景:我在验证规则里写了手机号码唯一,同时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阅读(28)

不知道如何使用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()给了个数组这种错误

Yii2.0,前台和后台设置不同的用户认证类?

HazelLion阅读(32)

在web.php配置里面,user组件里面可以配置identityClass选项是用那个用户类认证,我现在后台是用的一个module,我怎么让我的前途和后台的user的identityClass选项用不同的用户类?
我试着在module的components里面试图重新定义,我看不会覆盖啊!

前后台的主配置文件不一样啊,在backend和frontend的main.php里分别指定就可以了,注意和common/config/main.php merge的顺序
我在index.php 中打印出$config
[“user”]=>
这里写的是调用 backend\models\user 可是登录的时候还是调用的 common\models\User 类
亲测有用 Yii::$app->user->identityClass = ‘app\models\User2’;

yii2Url漂亮显示问题

kenbubble阅读(40)

yii2安装完之后,显示的路径是 http://loclahost/basic/web/index.php ,现在我把basic这个目录里面的内容上传到虚拟主机上了,然后通过 http://www.example.com/web/index.php 来访问,我想问有什么方法把web去掉,我没有配置apache主机目录的权限。

很高兴的告诉各位,我想到办法解决这个问题了。
=======================================分割线=======================================
漂亮显示问题 这个翻译略吊
去掉web 要把网站根目录指向web 没有权限操作apache 貌似整不了
http://www.zhixing123.cn/jiaocheng/htaccess-domain-point-subdirectory.html 我没试过,
1、web\Application:注消方法bootstrap内的/* Yii::setAlias(‘@webroot’, dirname($request->getScriptFile()));
2、frontend/config/bootstrap.php增加两个别名为Yii::setAlias(‘@webroot’, dirname(DIR) . ‘/web’);
Yii::setAlias(‘@web’, ‘/frontend/web’);

新人刚学Yii问一个弱智问题

lovelycrab阅读(46)

我把

<?php echo $form->labelEx($model,'username'); ?>
换成 

<?php echo $form->labelEx($model,Yii::t("base","Username")); ?>
的确显示了中文
可是 星号 * 却没了 怎么办呢?	

星号不星号的,我记得貌似是你设置了这个属性是必填的话,就自己有星号了
如果要修改文字不需要用T的.直接修改model里的attributeLabels对应该的字段就行了
或者你在T后面连接你想要的代码就得了.
你是弱智。

ActiveFielddropDownList选项问题

fationbubble阅读(30)

Yii2.0的。
ActiveField的dropDownList第二个参数options。
官方解释的其中一点:
options: array, the attributes for the select option tags. The array keys must be valid option values, and the array values are the extra attributes for the corresponding option tags.
我的理解是,是一个数组,然后数组的值是option标签的值,就是option标签的value属性的值,数组的值是对应于这个option标签的而外属性。
还给出例子:

[
    'value1' => ['disabled' => true],    //value2所在的option添加一个disabled属性,值是true,也就是这个option不可用
    'value2' => ['label' => 'value 2'],
];

那好根据我的理解,我现在需要select的第二个option是默认选中的,我的第二个option的value就是2,
那我传参:

[
    '2' => ['selected' => 'selected']
]

那么就应该没错吧?如果我理解没错的话。
直接报错!Yii没有正确处理!为什么?
是我理解错了吗?

在官方github主页上面提问搞定,下拉列表默认选中不是在option里面决定的,而是$model->category的值决定的。
你只要先把$article[‘cid’]的值赋给当前的$model->category,会自行决定那个默认被选中。
比如$article[‘cid’]的值是2,赋给$model->category之后,会自动的默认选中option标签的value是2的选项。
所以我上面的代码改成:
`
<?php $model->category = $article[‘cid’] ?>
<?= $form->field($model, ‘category’)->dropDownList(
) ?>
结果就对了:

PHP
`
请楼主以后用markdown格式书写,这次我帮楼主重新编辑了一下。

配置文件设置默认路由和控制器动作

NeoStone阅读(28)

怎么在配置文件设置默认路由 和控制器动作

默认控制器动作,是不是只有在控制器里才能定义
'defaultRoute'=>'controller/action',
所有可配置参数请参照 yii\web\Applicationyii\base\Application
基础版本的在config/web.php下找到这句

activeform的field如何改变长度

Nicelemon阅读(29)

activeform的field如何改变长度,yii 2.0默认是全屏长度,还有就是yii2.0的baseurl怎么获得。

修改长度有两种方式。一,给input添加class,写个样式覆盖他的默认样式。二,直接生成的时候把样式写在行内:$form->field($model, ‘title’)->input(‘text’,[‘style’=>’width:250px’]) ;
baseurl获取 Yii::$app->urlManager->baseUrl;<br/>
生成链接是:Yii::$app->urlManager->createUrl([‘xxx/xxx’,’xxx’=>’xx’])

yii2调用model[2.0]

foreverseagull阅读(33)

use frontend\models\user;use app\models\user;
有区别吗?

为什么在xxxController中用use frontend\models\user
调用model时:$model = User::findOne(Yii::$app->user->id);就报错:

Unknown Class – yii\base\UnknownClassException  
Unable to find 'frontend\models\User' in file: C:\wampsever\www\YIIadvanced/frontend/models/User.php. Namespace missing?

use app\models\user;就不会;

请阅读命名空间的内容
个人理解:namespace其实指明了当前文件所在的文件夹路径,当我们用use来引用相关的类的时候可以找到。
就类似于包管理机制,package
形式差不多的,用来管理类,
这两句有明显的差别,
因为两句导入了不同的类,一个是
app下的model里面的,一个是fronted下的
所以差别很大
其实你可以看看这个两个User文件的源码,你测试下就知道了
是不是user 大小写问题
这得看你定义的 namespace
像基本的模板里面用的 namespace 都是 app\models\User
而那个高级模板里面的是 frontend\models\User
应该是你配置的nginx的路径不是指向frontend吧

登录

找回密码

注册