谁一开始就是大神?

PHP 第70页

PHP

MySQL中文utf8排序问题[2.0]

Fionasea阅读(113)

网站开发接近尾声,几乎所有的编码都是采用utf8编码,但是最后在采用gridview显示人名,并排序的时候出现问题了。不是按照拼音或者笔画啊,乱七八糟的排序。也百度了应当采用gbk的方式才可以正确排序,也知道怎么加这个转换gbk的语句,但是在gridview点击行首排序咋个处理呢?
先谢谢啦。

在 Search model 内配置 setSort() 内的 attributes property 即可。下面的例子将 post.title 列设置为按拼音排序:
SELECT 字段名 FROM 表 ORDER BY CONVERT(字段名 USING gbk) ASC;

2个ActiveForm有啥区别?[2.0]

ACGdear阅读(107)

突然发现有2个ActiveForm 【yii\bootstrap\ActiveForm 和 yii\widgets\ActiveForm 】

想知道这2个Activeform 有啥区别呢?分别适合什么场景?

你可以看代码,yii\bootstrap\ActiveForm继承了yii\widgets\ActiveForm

【基础问题】Yii权威教程读不懂,关于RBAC的问题[2.0]

NiceStag阅读(122)

问题1:
  授权章节的RBAC中,首先提到:@yii/rbac/migrations,我通过搜索找到了这个目录的物理路径:Site\vendor\yiisoft\yii2\rbac。
  在之后的“使用规则”小节里,举栗代码的命名空间为“app\rbac;”,这个时候的rbac位于何处?
  如果要书面化这个命名空间,是否等同于:@app\rbac,那么@app的物理路径在哪?
  如果等同于models、views文件夹,我学习的是基础模板,是否需要自己创建rbac文件夹。

问题2:
  > ……在用 yii rbac/init 执行了这个命令后……
  yii rbac/init是什么?怎么用?

以上,希望前辈们给予解答。

app\rbac 的位置:
你说的对。目录 rbac 默认不存在,需要自己添加。
./yii rbac/init 是一个 console command.
Building Authorization Data 中提到的 RbacController.php 保存到如下位置:
之后在 Basic Template 根目录下执行

循环栏目下的所有二级栏目,每个栏目列出10条新闻。[1.1]

fationhope阅读(97)

现在分类只有一级和二级,知道一级的分类ID,可以查询出所有二级分类ID和名字,但是怎么循环查出每个分类下10条新闻,
现在控制器代码如下:

        $minlist = CateUtils::getMinCateList($cid); //获取所有下级栏目ID和名字
        foreach ($minlist as $k => $v) {
            $sql = "select id,catid,mincate,title from daquan_article where mincate = $k limit 5";
            $list['list1'] = Article::model()->findAllBySql($sql);
            var_dump($list);    //在这里可以每个二级栏目输出10条新闻,但是不知道怎么赋值到views

        }
        var_dump($list);  //这里只能输出第一个二级栏目的10条新闻

大神们帮忙看下,是哪里有问题。谢谢

$list['list1']
修改为
循环外怎么可能直接获得循环内的数据,美术老师教的?
比如有文章表 Article(Id,Category,InsertDate),现在要用SQL找出每种类型中时间最新的前N个数据组成的集合。
@N 就是你要取多少条

用户登录和自动登录的问题[2.0]

FionaJames阅读(100)

yii默认的用户登录,是以它原本提供的user表的结构进行验证的,但是,如果是原有的系统进行重构,原有的用户表设定并不是和yii提供的user表的结构类似,简单的说,密码的加密就不是按照yii提供的加密方式进行,也没有auth_key,access_token,那么,如果在这种结构上进行登录验证,如何做呢?

还有自动登录的问题,yii在设定了自动登录后,下次就不需要重新登录了,此时,如果管理员修改了用户的信息,比如,修改了用户的密码,那么,由于用户是自动登录的,也就意味着已经没有验证新密码,就访问到系统了,这种情况如何解决呢?

先解释自动登录的问题,就刚好用到auth_key,自动登录是根据cookie,获取cookie中用户id,然后去数据库获取用户信息,然后在查询出来的用户信息中auth_key和cookie中的auth_key进行匹配,在改密码后,会改auth_key字段的内容,匹配失败,要重新登录。
同理,access_token也是自动登录用的,一般是登录链接上带一长串字符,访问就可以登陆了。
没有这两个字段,access_token自动登录方式不能使用,cookie登录验证也会失败。
如果一定不用这2个字段,access_token自动登录方式不要用,cookie登录去掉auth_key验证(当然,这会出现你说的改密码不需要重登的问题。)。
呃呃呃呃呃呃,多点了一次,还不能删除了。

yii2中使用组件yii\widget\Menu输出的label内容带html时不会被解释,求帮助[2.0]

ACGlovely阅读(100)

直接上代码

$mainMenuItems = array();
	$mainMenuItems[] = [
		'label' => '<i class="glyphicon glyphicon-th-large"></i>首页',
		'type' => 'raw',
		'url' => ['site/index'],
		'options' => [
			'class' => ''
		],
	];

echo Menu::widget([
    'options' => [
	'class' => 'nav-tabs nav-stacked'
    ],
    'items' => $mainMenuItems
]);

如上的视图文件在页面中显示时这样的:
“&lt;i class="glyphicon glyphicon-th-large"&gt;&lt;/i&gt;首页”
而不是以html的形式显示,应该怎么办呢,知道的兄弟能否告知,不甚感激。

'type' => 'html',

执行composerrequiremdmsoft/yii2-admin"~2.0"发生错误[2.0]

loveLion阅读(103)

The "fxp/composer-asset-plugin" plugin requires composer-plugin-api 1.0.0, this *WILL* break in the future and it should be fixed ASAP (require ^1.0 for example).
PHP Fatal error:  Call to undefined method Fxp\Composer\AssetPlugin\Package\Version\VersionParser::parseLinks() in C:\Users\admin\AppData\Roaming\Composer\vendor\fxp\composer-asset-plugin\Repository\VcsPackageFilter.php on line 272

Fatal error: Call to undefined method Fxp\Composer\AssetPlugin\Package\Version\VersionParser::parseLinks() in C:\Users\admin\AppData\Roaming\Composer\vendor\fxp\composer-asset-plugin\Repository\VcsPackageFilter.php on line 272

composer global require "fxp/composer-asset-plugin:~1.1.1"
先执行这个。yiichina的文档太old了,需要升级

数据库with联合查询后怎么处理$orders[2.0]

Anitom阅读(111)

// 先执行sql: SELECT * FROM customer LIMIT 100;
// SELECT * FROM orders WHERE customer_id IN (1,2,...)
$customers = Customer::find()->limit(100)
->with('orders')->all();
foreach ($customers as $customer) {
// 在这个循环的时候就不会再执行sql了
$orders = $customer->orders;
// ...handle $orders...
}

照着文档里这么做,然后获取到的$orders是一个对象,如下:

yii\db\ActiveQuery Object
(
    [sql] => 
    [on] => 
    [joinWith] => 
    [select] => 
    [selectOption] => 
    [distinct] => 
    [from] => 
    [groupBy] => 
    [join] => 
    [having] => 
    [union] => 
    [params] => Array
        (
        )

    [_events:yii\base\Component:private] => Array
        (
        )

    [_behaviors:yii\base\Component:private] => Array
        (
        )

    [where] => 
    [limit] => 
    [offset] => 
    [orderBy] => 
    [indexBy] => 
    [modelClass] => common\models\AuthAssignment
    [with] => 
    [asArray] => 
    [multiple] => 
    [primaryModel] => common\models\Admin Object
        (
            [_attributes:yii\db\BaseActiveRecord:private] => Array
                (
                    [id] => 6
                    [username] => admin
                    [password_hash] => $2y$13$oYZrIQgTsipWdcNMKWCf8uxOIS286hOif9VWxf7.xnQ31MBje5AtS
                    [auth_key] => GQF9VeroKHrdo_72dzEF6SheBBOG-cuR
                    [status] => 1
                    [created_at] => 0
                    [last_time] => 1452569448
                    [ip] => 127.0.0.1
                )

            [_oldAttributes:yii\db\BaseActiveRecord:private] => Array
                (
                    [id] => 6
                    [username] => admin
                    [password_hash] => $2y$13$oYZrIQgTsipWdcNMKWCf8uxOIS286hOif9VWxf7.xnQ31MBje5AtS
                    [auth_key] => GQF9VeroKHrdo_72dzEF6SheBBOG-cuR
                    [status] => 1
                    [created_at] => 0
                    [last_time] => 1452569448
                    [ip] => 127.0.0.1
                )

            [_related:yii\db\BaseActiveRecord:private] => Array
                (
                    [authitem] => 
                )

            [_errors:yii\base\Model:private] => 
            [_validators:yii\base\Model:private] => 
            [_scenario:yii\base\Model:private] => default
            [_events:yii\base\Component:private] => Array
                (
                    [beforeInsert] => Array
                        (
                            [0] => Array
                                (
                                    [0] => Array
                                        (
                                            [0] => yii\behaviors\TimestampBehavior Object
                                                (
                                                    [createdAtAttribute] => created_at
                                                    [updatedAtAttribute] => updated_at
                                                    [value] => 
                                                    [attributes] => Array
                                                        (
                                                            [beforeInsert] => Array
                                                                (
                                                                    [0] => created_at
                                                                    [1] => updated_at
                                                                )

                                                            [beforeUpdate] => updated_at
                                                        )

                                                    [owner] => common\models\Admin Object
 *RECURSION*
                                                )

                                            [1] => evaluateAttributes
                                        )

                                    [1] => 
                                )

                        )

                    [beforeUpdate] => Array
                        (
                            [0] => Array
                                (
                                    [0] => Array
                                        (
                                            [0] => yii\behaviors\TimestampBehavior Object
                                                (
                                                    [createdAtAttribute] => created_at
                                                    [updatedAtAttribute] => updated_at
                                                    [value] => 
                                                    [attributes] => Array
                                                        (
                                                            [beforeInsert] => Array
                                                                (
                                                                    [0] => created_at
                                                                    [1] => updated_at
                                                                )

                                                            [beforeUpdate] => updated_at
                                                        )

                                                    [owner] => common\models\Admin Object
 *RECURSION*
                                                )

                                            [1] => evaluateAttributes
                                        )

                                    [1] => 
                                )

                        )

                )

            [_behaviors:yii\base\Component:private] => Array
                (
                    [0] => yii\behaviors\TimestampBehavior Object
                        (
                            [createdAtAttribute] => created_at
                            [updatedAtAttribute] => updated_at
                            [value] => 
                            [attributes] => Array
                                (
                                    [beforeInsert] => Array
                                        (
                                            [0] => created_at
                                            [1] => updated_at
                                        )

                                    [beforeUpdate] => updated_at
                                )

                            [owner] => common\models\Admin Object
 *RECURSION*
                        )

                )

        )

    [link] => Array
        (
            [item_name] => id
        )

    [via] => 
    [inverseOf] => 
)

我要怎么处理这个对象,以获取我两个数据表数据的集合,初学者求教

$customers = Customer::find()->limit(100)
->with('orders')->**asArray()**->all();

楼上正解,加上asArray()返回的就是正常的数组了

yii2的form表单样式怎么灵活控制呢?[2.0]

coolyak阅读(97)

yii2和bootstrap怎么配合,比如我用了$form->field()会自动生成一些html,其中的css是明显和bootstrap有关系的,这个时候如果我想改一下css怎么办。
例如,默认生成的是这个样子的:

QQ截图20160123084620.jpg

但是我嫌它太长了,用options加了class=col-lg-6,但是换行了
于是我用了template:

<?= $form->field($model, 'modules_name',['template'=>"<div class='col-lg-6'>{label}\n{input}\n{hint}\n{error}</div>"])->textInput() ?>

这样的话,显示正常了,但是不至于每个field都加一个template吧,有没有其他方案解决啊
或者是推荐个其他方案。

统一的样式可以在开头统一配置,个性化的设置只能每个filed单独配置。
在页面里加js代码块,直接用jquery加你想应用的样式
表示yii2的activeform非常不灵活

关于Yii2.0关于主题我有一大堆疑问呢![2.0]

likelypony阅读(96)

2.0 的默认主题是否可以彻底换掉.

关于 表单小部件 不兼容其他样式类么..

代码信息:

<?= $form->field($model, 'username',['class' => 'form-control input-lg' , 'placeholder' => '用户名 / 邮箱 / 手机']) ?>

错误信息:

ReflectionException
Class form-control input-lg does not exist

此问题毁在我手里面了..写完就找到答案了!..
正确的写法:

<?= $form->field($model, 'username')->textInput(['class' => 'form-control input-lg' , 'placeholder' => '用户名 / 邮箱 / 手机']) ?>

呵呵呵!.. 真天真..

下一个问题:按顺序加载的js 会受到组件加载的js 影响 js冲突 和 错误
S2XP7QDAG~JYU_O1OM}2XCC.png
按照图里信息还可以看到yii加载jquery 和一些其他的东西 ,因为我之前有加载过 jquery 所以一定会冲突!..

这里的class不是指css样式,是指php的类。
原来是这样。那后面的 placeholder 也是php类?

登录

找回密码

注册