谁一开始就是大神?

PHP 第108页

PHP

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

Ellieapple阅读(86)

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

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

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

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

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

Wendyseagull阅读(89)

毕业论文打算用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阅读(89)

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

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

如题。
请问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有效域也不同,就不会出现另一个用户掉线的问题了。

关于内容格式化输出的问题[2.0]

Tinaslim阅读(93)

大家好,请问,我有个字段“start_at”是unixtime格式保存的时间。
我想在输出是现实为日期格式 Y-m-d
在view界面我知道用 start_at:datetime 可以格式化为日期
但是在ActiveForm中我使用了DatePicker控件时,应该怎么让他也格式化成日期形式呢?我的代码如下。
谢谢大家。

<?= $form->field($model, 'start_at')->widget(
    DatePicker::className(), [
    'inline' => FALSE,
    'language' => 'zh-CN',
    'clientOptions' => [
        'autoclose' => true,
        'format' => 'yyyy-mm-dd',
    ]
]); ?>

‘dateFormat’ => ‘php:Y-m-d’,
需要添加
"yiisoft/yii2-jui": "*"
使用如下:
api参考:
http://www.yiiframework.com/doc-2.0/yii-jui-datepicker.html

ActiveQuery怎么生成(**and**)OR(**AND**)的SQL?[2.0]

Marksea阅读(79)

用activequery怎么生存(and) OR ( AND )的sql?
我括号里面and两边的条件含有运算符。
问题如果都是=我会,就是不知道怎么加其他运算符。
比如:
['or', ['type' => 11, test = 1], ['id' => 10, uid=5]
生成(type=11 and test=1) or (id=10 and uid=5)
我要生成(type=11 and test>=9) or (id=10 and uid=5);
怎么加运算符?

用andWhere()后缀在where()后面就ok了

Yii中jQuery的引入问题[2.0]

JackLion阅读(79)

我想在一个页面中使用ajax,但是jquery.js是在布局文件main.php的末尾引用的,导致ajax失效,其他jquery代码也是失效的。想到解决的办法有二。

第一:将jquery代码写到布局里面,显然不可取,因为这样会导致文件会有多于的jquery代码。
第二:将jquery.js由布局文件的末尾移到开头,但是问题来了,在布局文件main.php中我并没有看到引入jquery.js的源码,不知道在哪里

引入的,所以就没法移动。 求解?

解决办法,在配置文件web.php中的components里:
傻孩子,其实也可以定制一下jquery的,框架自带的jquery没有压缩的,比较大,可以把它在源码处改写,换成自己的jquery,这样能节省几十kb哦

yii2.0如何用B控制器继承A,A控制器继承yii\web\Controller[2.0]

likelyStone阅读(79)

由于像在A控制器中的__construct()做一些简单的验证,
然后B控制器才是访问的控制器调用parent::__construct()去做通用的验证,
但是会报错,报错如下

PHP Fatal Error – yii\base\ErrorException
Call to a member function getUniqueId() on a non-object

yii 框架需要自己创建 Controller 的实例,你任何时候都不需要覆盖人家的 构造函数,如果你需要覆盖的话,也需要和它的 方法签名 一样,并且调用 parent::__construct99.999% 的情况下,你不需要这么做
你的问题是,在 controler 初始化的时候,做些验证,用 init() 方法就可以了

登录

找回密码

注册