linkso

linkso

这家伙有点懒,还没写个性签名!

  • 财富值20
  • 威望值0
  • 总积分100

个人信息

  • 不错,学习了

  • 赞了评论

    不建议对入口文件index.php的修改,推荐的方法是在配置文件中(比如frontend/config/main.php)用behavior配置:

    return [
        'id' => 'app-frontend',
        'basePath' => dirname(__DIR__),
        'bootstrap' => ['log'],
        'controllerNamespace' => 'frontend\controllers',
        // behavior
        'on beforeRequest' => function ($event) {
            $l_saved = null;
            if (true){
                # use cookie to store language
                $l_saved = Yii::$app->request->cookies->get('locale');
            }else{
                # use session to store language
                $l_saved = Yii::$app->session['locale'];
            }
            $l = ($l_saved)?$l_saved:'en-US';
    
            Yii::$app->sourceLanguage = 'en';
            Yii::$app->language = $l;
            return; 
        },    
        // 组件
        'components' => [
            'user' => [
        ......
    

    处理多语言设置的action处

    /**
    * 设定语言: 1) 设置cookie,2) 跳转回原来的页面
    * 访问网址 - http://.../site/language?locale=zh-CN
    * @return [type] [description]
    */
    public function actionLanguage()
    {
    	$locale = Yii::$app->request->get('locale');
    	if ($locale){
    		#use cookie to store language
    		$l_cookie = new yii\web\Cookie(['name' => 'locale', 'value' => $locale, 'expire' => 3600*24*30,]);
    		$l_cookie->expire = time() + 3600*24*30;
    		Yii::$app->response->cookies->add($l_cookie);
    	}
    	$this->goBack(Yii::$app->request->headers['Referer']);
    }
    

    入口文件在高级版本是init之后产生的,默认不会被放到git库。

  • 赞了评论

    windows wamp安装使用发现以下问题:
    1、进入rbac/role出现“Static function johnitvn\rbacplus\models\AuthItem::find() should not be abstract”
    解决方式:将johnitvn\rbacplus\models\下AuthItem.php 86行public abstract static function find($name);改为public static function find($name){}
    2、进入rbac/role/create出现“Declaration of johnitvn\rbacplus\models\Role::afterSave() should be compatible with johnitvn\rbacplus\models\AuthItem::afterSave()”
    解决方式:将johnitvn\rbacplus\models\下AuthItem.php 140行public function afterSave() {的括号里加一个参数,如:public function afterSave($insert) {
    3、在rbac/role/create时若角色已存在且不添加权限会出现"in_array() expects parameter 2 to be array, string given"
    解决方式:将将johnitvn\rbacplus\views\role下_form.php 40行in_array($permission->name,$model->permissions)修改为in_array($permission->name, !is_array($model->permissions) ? array():$model->permissions)
    4、在rbac/role/create时若角色不存在且不添加权限会进入rbac/role/view页面此时会出现"Non-static method johnitvn\rbacplus\models\Role::getPermistions() should not be called statically, assuming $this from incompatible context"
    解决方式:将johnitvn\rbacplus\models\下Role.php 64行public function改为pubic static function
    5、在rbac/role或rbac/permission页面删除的时候,弹窗出来不论点确认还是取消,弹窗无变化且数据没删除
    解决方式:不知是否是浏览器还是其他什么原因,未解决
    6、建议:建议采用ajax来验证角色或权限的唯一性
    ps: 添加了['enableAjaxValidation'=>true],但是没效果,还不清楚是什么原因
    以上是使用反馈,希望楼主给予解决,本人菜鸟,有说错的地方多多包涵!

  • 回复了 的评论

    你忘记了还有rule没讲,它才是rbac的亮点。

    请问下createPermission...这些方法是写到什么地方呢?

  • 回复了 的回复

    第7条,建议使用原生的sql语句.
    $command = $connection->createCommand('SELECT * FROM post');
    $posts = $command->queryAll();
    用久了这种重度orm的东西,会忘记sql如何编写. 不是好事哦.个人见解,仅供参考o(∩_∩)o

    嗯,项目中途换数据库这种事确实很少,但还是有的,上次我公司一个项目,在mysql和sqlite来回切换了两次。

  • 回复了 的回复

    第7条,建议使用原生的sql语句.
    $command = $connection->createCommand('SELECT * FROM post');
    $posts = $command->queryAll();
    用久了这种重度orm的东西,会忘记sql如何编写. 不是好事哦.个人见解,仅供参考o(∩_∩)o

    切换数据库的时候,语法会不一样,你现在用的mysql是一套语法,如果现在的项目需要切换到oracle,如果是用的框架带的sql生成器。那么切换数据库的时候,仅仅是换个数据库名。其他代码都不用改,如果你写的原生sql语句,那么是不是你的sql语句也得改呢。

助理 等级规则
100/200
资料完整度
20/100
用户活跃度
0/100

Ta的关注

0

Ta的粉丝

1

Ta的访客

3