请教下 我用的是 yii2 高级版 我把网站根目录设置在backend/web backend 里面有index模块 怎么配置默认访问的是 index/DefaultController 现在默认访问的是模块外面的 site/login
设置defaultRoute
请教下 我用的是 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 用法 淘汰了呢
运行下面的代码,本地windows环境不会出现存入多条重复数据的情况,正式linux环境经常出现存入多条重复数据,有人知道原因吗?
public function actionTest(){
set_time_limit(0);
$timeStamp = strtotime('2015-04-27');
//日期等于今天日期跳出循环
while (date('Y-m-d', $timeStamp) != date('Y-m-d', time())) {
$date = date('Y-m-d', $timeStamp);
//todo 数据存入数据库的操作;
$timeStamp = strtotime('+1 day', $timeStamp);
}
}
可能是多次调用了函数,具体的要自己去调试才知道哪里出了问题。
如果仅需要运行一次,尝试加个互斥变量。
在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函数里面第三个参数进行设置, 达到同样的效果?
对于整体项目,需要一个自己的公共基类,如 BaseController ,所有项目控制器全部继承此控制器,这样方便开发,如何声明此文件,应该放在哪里的?(使用多个模块开发时特别有用)
高级模版的话 可以在common目录再新建个controllers目录,文件名可以是CommonController 命名空间就是
namespace common\controllers;
普通模版,高级模版都可以在任意地方建立,只要命名空间正确,use路径正确,自定义位置