谁一开始就是大神?

PHP 第107页

PHP

yii如何整合的bootstrap[2.0]

lovelyseagull阅读(96)

看到yii整合后bootstrap,与原始的bootstrap语法不一样了,感觉变的更复杂了,这样有什么好处呢?有没有详细的教程

你用yii自带的bootstrap一样可以用原始的。
我觉得随便了!

请教关于国际化默认路径的问题。[2.0]

Graceseagull阅读(86)

大家好。
我在做翻译文档的时候有点疑问,还请大家帮助,谢谢。
官方手册中有这么一句

Instead of configuring fileMap you can rely on convention which is BasePath/messages/LanguageID/CategoryName.php.

依靠BasePath/messages/LanguageID/CategoryName.php 这样约定好的翻译文件格式可省略配置 fileMap

我使用的是yii2.0.3 高级程序模板
common目录下,有目录messages/zh-CN/common.php 其中有数组 'id' => '编号'
程序中我使用

<?=  yii::t('common', 'id') ?>

但是不输出汉字内容内容。如下是我common/config.php中关于国际化的配置内容

'i18n' => [
            'translations' => [
                '*' => [
                    'class' => 'yii\i18n\PhpMessageSource',
                ],
            ],
        ],

还请大家看看,为什么是不是我的目录结构或者文件名称 还是没有符合默认规则。 请问大家 如何解决?

求个yii2数据缓存示例[2.0]

Honeyslim阅读(82)

要用哪个缓存组件,怎么使用,我看了下指南,但弄不了。

首先配置一下缓存,自己选择是用文件缓存还是数据库缓存等。
然后就可以通过 Yii::$app->cache->set()Yii::$app->cache->get() 设置、获取缓存内容了。
下面是一个带缓存依赖的实例:

如何在activeform中一行显示多个field[2.0]

Aibylemon阅读(91)

如何在activeform中一行显示多个field,自动生成的都是一行一个

<?= $form->field($model, 'kf_jiaoda')->textInput() ?>

<?= $form->field($model, 'kf_yanzhong')->textInput() ?>

<?= $form->field($model, 'kf_hongxian')->textInput() ?>

这个和activeform没有任何关系。。。和你的布局有关,这两行不过是生成input的html tag而已。因为yii是用的bootstrap作为前端,你可以看看bootstrap的布局就很容易解决(http://getbootstrap.com/css/#grid),建议系统的学习一下bootstrap。
ok,如何解决你的问题,以yii-basic中的contact.php的那个表单来说:
`
忘记说了,上面的修改让name和email在同一行了,其余代码没修改。
另外,其实contact.php中那个输入验证码本来就是同一行的,其也是一个道理,就是bootstrap的布局的结果。

Yii2.0控制器的behaviors[2.0]

foreverapple阅读(93)

class CustomController extends ActiveController
{
    public $modelClass = 'app\models\Custom';
    // public $serializer = [
    //     'class' => 'yii\rest\Serializer',
    //     'collectionEnvelope' => 'items',
    // ];

    public function behaviors()
	{
	    return ArrayHelper::merge(parent::behaviors(), [
	        'authenticator' => [
	            'class' => QueryParamAuth::className(),
	        ],
	        'rateLimiter' => [
	            'class' => RateLimiter::className(),
	            'enableRateLimitHeaders' => false,
	        ],
	    ]);
	}

}

源代码中,控制器的behaviors是在哪里处理的?
比如说:QueryParamAuth对象是在哪里实例化的?并且调用了authenticator()方法。

你给的例子,其实不能完全说明 behaviors 的行为,这里是 filter 的行为,但 filteryii2yii 中的实现不一样,yii2 中的 filter 是特殊的 behavior ,被框架多加了一层的处理,这里我只说明下 filter 的调用, 普通的 behavior 我暂时还没有用到,不清楚
一句话,QueryParamAuthauthenticator() 方法,是在 Controller 调用 beforeAction 时触发的,你可以在 Controller 复写 beforeAction 方法为空操作,看看还会不会调用。
在底层的 Controller 中,beforeAction 执行了 $this->trigger(self::EVENT_BEFORE_ACTION, $event) 触发了 EVENT_BEFORE_ACTION 事件,在 yii\base\Componenttrigger 会首先 ensureBehaviors(),把 behaviors() 定义的行为附加到 Controller
}
QueryParamAuth 最终继承自 ActionFilter 的,来看看 ActionFilterattach 时会做什么
会在 Controller 上绑定一个 EVENT_BEFORE_ACTION 事件,行为是执行自己的 beforeFilter 方法
到这里,你看到了,ActionFilter 最终会执行自己的 beforeAction 方法,当然这可不是 Controller 中的 beforeAction 方法,还会处理些前置check,如 exceptonly 检测,这个 beforeAction 正是你写 filter 时需要复写的一个方法,至于 QueryParamAuthauthenticator() 方法,自己可以接着走代码
入口是 ControllerbeforeAction 方法,可以自己走一遍源代码,就这些

请问2.0.2高级程序模板建立的应用。为什么前台登录后,后台不会同步登录信息?[2.0]

Ellieyak阅读(93)

如题。
请问2.0.2高级程序模板建立的应用。 为什么前台登录后,后台不会同步登录信息? 或者后台登陆前台也不会同步登录信息。
我自己将应用改名了

backend => admin
frontend => www

并且新建了manage的应用

现在登录了 其中任何一个应用 其他2个应用不能像官方的初始化程序一样, 同步登录信息, 不知道是哪里的问题。 还请各位朋友帮助下,谢谢。

我安装了 advanced 模板,测试了下
common 下 配置
www.t1.com, admin.t1.com 可以实现一同登录,一同注销,你按照我的这个配置下看看,其他的配置就不需要了,这个主要是为了让 PHPSESSIONID,和 _identity 生成的 cookie 都在域 .t1.com 下,并且共用 session
估计你没有针对两个应用使用不同的 session name,都是默认的 PHPSESSID ,这样是会被相互覆盖的,需要设置不同的 session name, session_name
yii\web\Sessionpublic function setName($value) 方法, 所以你可以在配置文件里面配置不同的 session name, 代码上不用改动,推荐这样子,试下看看。
是配置文件是怎么写的?
确认是不是 backend,frontend 用的 phpsession id 是否相同
不能在 common 下配置,要在 frontend 和 backend 下分别配置,并且配置成不同的 name
配置在 components 组件内的,移动到上层,肯定是错的
你在 common/config 里面配置的 session 已经生效了
这里两个应用的 PHPSESSIONID 都已经变成了 MySSID 了,但是因为在 common 下面,所有 wwwadmin 公用了 session name,所以要单独配置在 wwwadmin 下,配置成不同的名字,然后在检查下生成的 cookie name 有没有变化,如果有不同,但是还是无法共同登录的话,有可能就是其他原因造成的了
还有,测试的时候多刷新几次,先把其他的 cookie 清理掉,在单独测试
admin.xxx.com
www.xxx.com
www 的站点下 cookie 没有 _identity 这个 key,是没有登录么?
adminwww 都登录的情况下,_identity 应该是有两个的,admin 下有一个
www 下有一个
你都登录下,把 _identitycookie 信息都拿出来看下
靠,你说的是前后台同步登录呀
理解错了,以为你说的是 前台登录了,后台就掉线了,后台登录了,前台就掉线了,以为你相同的 session 被覆盖了
在 common 配置下 components 里面,配置下 user
用这个把 identity cookie 的信息配置下,生成的 cookie 信息应该是
测试下看 ok 不,我这边没有 advance 模板,我弄个看看
我也遇到的,我的解决办法是:
分别使用localhost:8080访问,和127.0.0.1:8081访问,这样两者的根域不同,则USER登陆后的COOKIE有效域也不同,就不会出现另一个用户掉线的问题了。

Yii自义rules中自义方法中的参数params代表什么?[2.0]

Litom阅读(87)

如题,给字段title自定义一个验证方法确保标题唯一,规则为
'title','ckunique','params'=>'title'],自定义方法如下:

public function ckunique($attribute,$params) {
    if(News::ckunique($params,$this->$attribute)){
        $this->addError($attribute,'内容不唯一');
    }
}

这个当然ok,但是我想把规则里面的参数自定义,如 [‘title’,’ckunique’,’key’=>’title’],那么自定义方法怎么处理 params?

public function ckunique($attribute,$params) {
    if(News::ckunique($params,$this->$attribute)) {
        $this->addError($attribute,'内容不唯一');
    }
}

params是你加的参数啊,例如你可以通过传入不同的参数,去获取不同的判断
如果$params[‘index’],中index是变量,怎么弄呢,比如他是一个店铺的id,id是不固定的,该怎么写呢?

Yii创建form表单?

Jacklemon阅读(78)

求来一个通俗易懂的讲解,教程看不懂啊

gii gii gii gii gii gii gii gii gii gii

render渲染视图实质上就是将views的代码调用到controller里面吗[1.1]

acgpony阅读(80)

用widget生成表单,我看到视频里面生成的表单是action到view的,但是为什么在控制器能够接收到数据呢?render渲染视图实质上就是将views的代码调用到controller里面吗?

表单的显示和提交是两个过程:
1) 显示表单,get方法调用controller的action,render函数调用view返回要渲染数据,传给layout返回给浏览器。
2) 表单提交,post方法调用controller的action,通常不调用render,而是判断是有POST数据执行save分支然后redirect(重定向触发另一个get请求)。
或者简单说:有表单的controller/action被请求时,最多会执行两次。这两次都是独立进行的,因为浏览器和web服务器的连接一般是‘短连接’。

登录

找回密码

注册