请教下 域名/site/login 可以怎么配置成 域名/login
配置文件中
这个是1.1.16的你参考下吧
给你一个带注释的吧。
请教下 域名/site/login 可以怎么配置成 域名/login
配置文件中
这个是1.1.16的你参考下吧
给你一个带注释的吧。
请教下 我用的是 yii2 高级版 我把网站根目录设置在backend/web backend 里面有index模块 怎么配置默认访问的是 index/DefaultController 现在默认访问的是模块外面的 site/login
设置defaultRoute
我想在项目里面使用一个自定义的表单结构, 同时做一些表单验证, 希望能够用到Yii里面自带的一些验证功能, 这个方式怎么去做啊?
新手一枚, 望大家多多指教, 谢谢.
自定义一个模型,然后在这个模型里设置rules,会自动生成表单验证。
例如:
mysql> select* from table1;
+------+-------+
| id | name |
+------+-------+
| 1 | lee |
| 2 | zhang |
| 4 | wang |
+------+-------+
3 rows in set (0.00 sec)
mysql> select * from table2;
+------+-------+
| id | score |
+------+-------+
| 1 | 90 |
| 2 | 100 |
| 3 | 70 |
+------+-------+
3 rows in set (0.00 sec)
mysql> select * from table1 full join table2 on table1.id=table2.id;
ERROR 1054 (42S22): Champ 'table1.id' inconnu dans on clause
我都怀疑是不是版本问题,或者full join on 用法 淘汰了呢
在LoginController中我写到
function actionIndex()
{
$loginForm = new LoginForm;
if(isset($_POST['loginForm'])){
$LoginForm->attributes = $_POST['loginForm'];
if($loginForm->validate()){
echo 1;die;
}
}
// 加载为空的布局
$this->layout = 'empty';
$this->render('index');
}
在视图中的就不粘了,前台直接显示未定义变量
Error 500
Undefined variable: loginForm
请问是什么问题,求指教
看看中间行的的那个$LoginForm
的L有无问题。
$model->load($post)
还要不要 && $model->validate()
一起用?
更新和添加数据的时候有区别吗?
还有 model 里没写rules的时候 load()
会不会成功?load()
会不会验证rules里的规则?还是要validate()
的时候才验证rules?
要一起用,load()
只是加载数据,validate()
才是验证。
更新和添加都用save()
,yii通过$model->isNewRecord
来判断是不是一条新纪录,然后调用insert()
或者update()
。load()
和setAttributes()
方法都属于批量赋值,yii为了保护数据的安全性,是禁止批量赋值的,但是当数据符合rule规则的时候就可以批量赋值了,所以没写rules就不能用load()
。就算某个字段不需要什么规则,用户输入什么都可以,那么要把这个字段的规则设置safe,一般gii生成的model最后一行都是safe的。
你可以不用validate()
,因为save方法会先调用validate()
再执行insert()
或者update()
(看源码就知道)。
需要一起用
load填充属性,validate根据rules进行校验
直接看源码就明白了。
借楼问一个问题
model里面规定了必传的字段
但是还有其他的参数是非必传的
这时候 其他的字段就算赋值了也保存不了是什么原因呢?
@huaixiaoya @大裤叉子 已经回答过了,需在rules里面配置上且属性为safe~~
爬啊爬怕怕!!Mark
请问用yii能实现吗
在配置里修改db的内容应该就可以了,不过我贴的配置是yii2的,1.x的没用过不是很了解
yii怎么让input只能输入数字。
model 验证 rules
可以试试html5的,多种选择哦
如下设置 文本框提示信息
public function attributeHints(){
return [
'username' => 'fill your name',
'password' => 'fill your password'
];
}
如何通过
$form->field($model, 'username', ['template'=> '{input}{hint}{error}'])
field函数里面第三个参数进行设置, 达到同样的效果?
在登录中,验证通过更新用户表的ip和时间
数据库中 time 是时间戳 为 Int
我查询的代码
$username = $loginForm->attributes['username'];
$user = User::model()->find('username=:name',array(':name'=>$username));
//$user->time=time();
//$user->ip=Yii::app()->request->userHostAddress;
var_dump($user);die;
$user->save();
网页打印的代码
array (size=6)
'id' => string '1' (length=1)
'username' => string 'admin' (length=5)
'password' => string '21232f297a57a5a743894a0e4a801fc3' (length=32)
'ip' => string '127.0.0.1' (length=9)
'time' => string '1435394244' (length=10)
'class' => string '1' (length=1)
我组装数组的代码
Yii::app()->session['logintime'] = time();
$username = $loginForm->attributes['username'];
$user = User::model()->find('username=:name',array(':name'=>$username));
$user->time=time();
$user->ip=Yii::app()->request->userHostAddress;
var_dump($user);die;
$user->save();
网页显示的
array (size=6)
'id' => string '1' (length=1)
'username' => string 'admin' (length=5)
'password' => string '21232f297a57a5a743894a0e4a801fc3' (length=32)
'ip' => string '127.0.0.1' (length=9)
'time' => int 1435553625
'class' => string '1' (length=1)
数据库结构中时间为int型。
最后更新提交的时候提示
CDbException
Column name must be either a string or an array.
C:\wamp\www\cms\framework\db\schema\CDbCommandBuilder.php(831)
model User
的代码贴一下