谁一开始就是大神?

PHP 第61页

PHP

可以用attributeLabels()来对应字段的中文,有没类似的方法可以value的?[2.0]

Lihope阅读(41)

在GridView::widget里,可以用attributeLabels()来指定对应字段的中文,有没类似的方法可以指定value的?

 public function attributeLabels()
    {
        return [
            'log_id' => '日志ID',
            'company' => '来源公司ID',
            'user_id' => '用户ID',
            'modules' => '模块来源',
            'create_time' => '发生时间',
        ];
    }

················
经过一番努力终于早到了解决办法,既然自己回答不了我就在这里分享一下吧
以modules字段为例,他的值有’module_1′,’module_2′,’module_3’……
这时我们可以在对应的Model文件中添加以下代码:

    const MODULE_1 = 'module_1'; 
    const MODULE_2 = 'module_2'; 
    const MODULE_3 = 'module_3'; 

    public static $moduleList=[
        self::MODULE_1=>"模块一",
        self::MODULE_1=>"模块二",
        self::MODULE_1=>"模块三"
    ];

    public function getModule(){
        $modules = self::$moduleList[$this->modules];
        return isset($modules) ? $modules : null;
    }

最后修改对应的视图文件,调用getModule方法

<?= GridView::widget([
        'dataProvider' => $dataProvider,
        'filterModel' => $searchModel,
        'columns' => [
            [
                'class' => 'yii\grid\SerialColumn',
                'headerOptions' => ['class' => '']
            ],
            'order_id',
            [
                'attribute' => 'modules',
                'headerOptions' => ['class' => 'col-md-1'],
                'value'=>
                    function($model){
                        return $model->Module;
                    },
            ],
            ['class' => 'yii\grid\ActionColumn'],
        ],
    ]); ?>

最后显示的效果是,当数据库存放的值是’module_1′,’module_2′,’module_3’……那么前端显示的将是对应的中文’模块一’,’模块二’,’模块三’······

设置字段默认值?
你确定你不是在开玩笑?

如何记录一个正在填资料的页面状态

lovelyFox阅读(43)

今天写一个程序时,在填资料时填到一半,不小心按到回车键,然后页面刷新了,然后辛苦半天填写的资料就没有人。有什么办法可以回到刚刚填写的页面,让那些辛苦填了半天突然不知道什么原因就资料就没有了还能恢复到当前状态呢?

给你一个思路

};
//如果用户留在了页面,就执行下面这个。
function beforeloadResult () {
alert(‘你还在本页面’);
}

不用确认用户表单是否提交,只要打开页面超过一定时间就需要确认才可以离开。
很多浏览器返回上一页面可以保留资料,但页面刷新一般不会保留.
你要记录就用本地cookie记录未完成的资料咯
我们项目中 现在有这个功能 我们采用的思路就是 用户每输入一个 就保存到redis中 输入完全点击确认会保存到数据库中 假如误操作 进入这个页面 会从redis中 读取 以前输入的值

yii2如何执行原生的SQL删除语句啊?[2.0]

momoStag阅读(38)

如题 UserComment::deleteAll(['id' => [$id_list]]); 我在这种状态 删除不掉 id in() 这种的原生SQL,怎么写呢。$id_list里的字符串已转换成 '2','3','4' 这样子的了。。

这样写,你看行不行?
$id_list里面是数组
。。。转成字符串你再加个[]干啥

一个修改密码的功能,收集表单后load方法返回false,大神帮忙查看是什么原因[2.0]

Neocrab阅读(39)

控制器

public function actionPassword()
    {
        $model = new PasswordForm;
        $request = Yii::$app->request;
        $res=$model->load(Yii::$app->request->post());

        var_dump($res);
        if($request->isPost && $model->load(Yii::$app->request->post()) && $model->changePassword())
        {
            //echo "123";
            Yii::$app->user->logout();
            return $this->goHome();
        }else{
            return $this->render('modify-password',['model'=>$model]);
        }
    }

model

<?php
namespace frontend\models;

use Yii;
use yii\base\model;
use common\models\User;

class PasswordForm extends model
{
	public $password;
	public $pass1;
	public $pass2;

	public static function tableName()
    {
        return 'user';
    }
	
	public function changePassword()
	{

		$id = Yii::$app->user->id;
		$admin=  User::findIdentity($id);
		$password = $admin->password_hash;
		if(Yii::$app->getSecurity()->validatePassword($this->password, $password)){
			if($this->pass1 == $this->pass2){
				$newPass = Yii::$app->getSecurity()->generatePasswordHash($this->pass1);
				$admin->password_hash = $newPass;
				if($admin->save()){
					return true;
				}else{
					return false;
				}
			}else{
				Yii::$app->session->setFlash('contact','两次新密码不相等');
				return false;
			}
		}else{
			Yii::$app->session->setFlash('contact','旧密码错误');
			return false;
		}

	}
	
}

视图

<?= Html::beginForm(['password'], 'post', ['enctype' => 'multipart/form-data']) ?>
									<div class="pass">
										<p class="pass-box">
											<img src="<?=$baseUrl?>images/srmm.png"  />
											<!--<input type="password" name="old" placeholder="输入旧密码…" />-->
											<?=Html::input('password','model[password]','',['placeholder'=>'输入旧密码…']) ?>	
										</p>
										<!--<span>旧密码错误</span>-->
									</div>
									<div class="pass">
										<p class="pass-box">
											<img src="<?=$baseUrl?>images/srmm.png"  />
											<!--<input type="password" name="new" placeholder="输入新密码…" />-->
											<?=Html::input('password','model[pass1]','',['placeholder'=>'输入新密码…']) ?>	
										</p>
										<!--<span>新密码不符合</span>-->
									</div>
									<div class="pass">
										<p class="pass-box">
											<img src="<?=$baseUrl?>images/srmm.png"  />
											<!--<input type="password" name="old" placeholder="再次输入新密码…" />-->
											<?=Html::input('password','model[pass2]','',['placeholder'=>'输入新密码…']) ?>	
										</p>
										<!--<span>2次密码输入不一致</span>-->
									</div>	
							</div>
							<p class="btn">
								<!--<button>保 存</button>-->
								<?=Html::submitButton('保 存')?>
							</p>
						</div>
						<?= Html::endForm() ?>

PasswordForm 中增加下面规则:

如果用了load, 建议在Form中使用 Html::activeTextInput 之类的方法

控制器问题[2.0]

Newseagull阅读(48)

class HomePageController extends Controller{
	public function actionIndex(){
		return $this->render('index'); 
	}
}

这样访问:
http://127.0.0.1/yii/b/web/index.php?r=home-page
提示:

Not Found (#404)
Page not found.

哪里有错呢?

看下base\controller
url :
http://127.0.0.1/yii/b/web/index.php?r=home-page/index
or
学习了,Camel case controller name not well supported #493,view文件夹也需要是’home-page’。

怎么实现whereid>45anduid=1???[2.0]

Harrydolphin阅读(40)

$data = Chat::find()->where(['>', 'id', 45],'uid'=>1])->asArray()->all(); 要怎么改呢?

还是预处理的更好用
如果先看到底运行的原生sql是什么可以用这样

大家好。。请问在YII2模板中原生PHP语法写法?有没有专门在YII2模板中写原生PHP语法的写法?[2.0]

youthfans阅读(36)

如这段代码。。。

<?php if( ($status['status']) == 1 ): ?>
<span class="wh-collect"><span class="collect"><?php echo '已收藏'; ?></span>(<span id="count">0</span>)</span>
<?endif; ?>
<?php else: ?>
<span class="wh-collect"><span class="collect"><?php echo '收藏'; ?></span>(<span id="count">0</span>)</span>
<?php endif; ?>

转换为YII2中的语法 应该怎么写。。谢谢了。

Yii的模板中 只支持 原生PHP的写法,不需要做什么 转换
直接写,没区别.
提问前没试着把这段代码放到yii里跑一下?
直接写 原生的PHP 就可以了
没有区别,可以直接写
直接写就得了,除了表单,其他没必要用yii写,反倒是脱了裤子放屁 本身浏览器处理的事情 按yii那样写现在还得php引擎处理

登录

找回密码

注册