谁一开始就是大神?

PHP 第107页

PHP

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

Graceseagull阅读(27)

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

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阅读(27)

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

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

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

Aibylemon阅读(33)

如何在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的布局的结果。

yii2advancedinit时候选择dev跟pro有什么区别?[2.0]

NiceKeo阅读(29)

我试了下,好像没有什么区别啊?

除了以上区别,还有环境配置相关的区别:
\environments 下存放了2个目录和一个文件,你可以分别配置开发环境和生产环境,在本地就选dev,线上就选prod,这样就可以实现本地和线上无痛切换了。当然,你也可以通过 -local.php 来实现。你没发现有区别是因为你没有配置不同环境的不同配置。
入口文件有区别:
dev的入口文件代码
prod的入口文件代码
在本地就选dev,线上就选prod

在DetailView中如何自义为自己想要的样式?[2.0]

Ellieapple阅读(31)

用Gii直接生成的视图文件里:

<?= DetailView::widget([
    'model' => $model,
    'attributes' => [
        'uid',
        ['label'=>'gender','value'=>$model->getGenderText()],
    ],
]) ?>

这里面输出的HTML怎么自定义或修改样式?

研究了一下Yii2.0源码,找到了答案,给大家分享如下:
DetailView可以自由定义样式
输出后的HTML为:
其它具体参数,可以参考【yii\widgets\DetailView
不错,感谢分享~~~
内容呈网格状···咋弄··

用Yii的企业多吗?感觉很少啊。想找一书籍,在大淘宝上居然搜不到。[2.0]

Wendyseagull阅读(33)

毕业论文打算用YII做个网站,看到有人介绍这边书《应用Yii1.1和PHP5进行敏捷Web开发》发现淘宝居然没有,甚至其他书籍也没。。

yii1的书,http://www.yiibook.com/ 有下载。
yii2的书只有英文的。可以到http://it-ebooks.info/search/?q=yii&type=title 这里下载。
Baidu Tencent都有使用的.
Sina, jumei, xiaomi 也都有使用的。

Yii中出现“<?=...?>”是什么意思?[2.0]

Fionapony阅读(30)

Yii 中出现的“<?=” 是什么意思啊?比如下段代码

<?= Breadcrumbs::widget([
    'links' => isset($this->params['breadcrumbs']) ? $this->params['breadcrumbs'] : [],
]) ?>

这时php的标签,和<?php ?>一样的。用<?= ?> 就不用echo,否则你要输出的话,需要加上echo词汇输出。
这个就是用在模板里面方便点。
这个不是php语法么?是php的一种输出格式
楼上的回答太美妙了,赞一个
其实建议你用最标准的<?php ?>这样大家都能看懂,新手也不会有这个问题了
最好用标准格式
这样的方式是必须开PHP扩展才可以实现的,向下不一定会兼容
我的觉得yii2 对 <?= 进行了处理,并不像上面说的那样是php的语法,在输出widget时,将<?= 换成 <?php 试试?

Yii2.0控制器的behaviors[2.0]

foreverapple阅读(31)

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阅读(31)

如题。
请问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阅读(31)

如题,给字段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是不固定的,该怎么写呢?

登录

找回密码

注册