谁一开始就是大神?

PHP 第66页

PHP

GridView+ActiveDataProvider怎样才能做到添加一条其他表的数据[2.0]

Tinalove阅读(39)

现在遇到一个问题,展示渠道表内的内容时,需要用到一个用户表的字段信息

controller

public function actionIndex()
{
    $dataProvider = new ActiveDataProvider([
        'query' => Channel::find(),
    ]);

    return $this->render('index', [
        'dataProvider' => $dataProvider,
    ]);
}

views

<?= GridView::widget([
    'dataProvider' => $dataProvider,

    'columns' => [
        ['class' => 'yii\grid\SerialColumn'],
        'channel_id',
        'channel_name',
        'email',<=================== 用户表内的一个字段
        'channel_created_at',
        [
                'class' => 'yii\grid\ActionColumn',
                'header' => '操作',
                'template' => '{view}{update}',
        ],
    ],
]); ?>

Channel模型里,定义一个getUser函数
两个思路:
1.联合查询数据,一次性把要的数据查询过来.
如楼上所示,还可以改进一下.
2.在要用到的地方临时查询数据.

yii2怎么将登陆页面独立处理而不是显示在主页里面?[2.0]

Nobleyak阅读(42)

就是将一打开主页显示的是登陆页面,而不是主页的右上角有个登陆的按钮怎么做?

自己在views/layouts里面写一个登陆页面
然后在控制器方法里面用$this->layout = ‘自定义登陆页面文件’ 例如 $this->layout=’login’
最后
输出页面
面。111
自己写一个单独的登录页面就行

$_GET['test']会报错[2.0]

Candyyak阅读(39)

我知道yii可以用 yii::$app->request->get() 获取所有的get参数

但是为什么我直接打印 Print_r($_GET['test']); 的时候报错

PHP Notice – yii\base\ErrorException

Undefined index: xp

我记得1里面是没有这样报错的 是不是有什么地方设置?

$_GET数组中没有xp这个键 你使用了当然会有警告
请问你在哪个地方打印$_GET的,$_GET真正被处理的时候在这里,假设是基于?r=这样子的
我在windows下不会报错,但如果放在服务器端,就会出错,可能跟php环境有问题,类似的问题可能还会有好几个地方。
所以在使用post和get接收数据的时候,首先是使用Yii::$app->request->get() Yii::$app->request->post(),如果使用过一次之后,获取其他参数也可以使用$_GET$_POST
当然会报错了,要自己做判断 ,所以不建议直接用$_GET $_POST 而是用yii封装好的方法
用框架提供的request,存在必然有道理

在最新的2.0.7的migrate中,怎样为一个字段添加备注?[2.0]

Harryhope阅读(39)

之前的版本实现:

'phone' => Schema::TYPE_INTEGER . '(11) NOT NULL COMMENT "备注"'

2.0.7

'phone' =>$this->integer([11])->notNull()->?

看了下源码,最终会调用:yii\db\QueryBuilder的createTable方法
他举了个例子:
也就是数组中的key会作为字段,value作为类型,然后得看这个方法getColumnType
他首先判断传过来的类型是不是ColumnSchemaBuilder这个对象,如果不是,做一些正则判断,最终返回一个字符串,那反正最终就是构成一个合法的字段声明, 比如:
那你可以试试,在构建的时候,直接这样做:
这样应该也是可行的。具体需要你去试试。
2.0.7不支持之前版本的实现了?是不能那样用了吗?
你是不是希望有个->comment('xxx')方法啊 哈哈,好吧,这种非标准的语法不兼容其他数据库,所以yii没提供,只能自己按照你前一种写了,
之前的方法还能接着用吧?
不错,’username’ => $this->string(32)->notNull()->unique().” COMMENT ‘管理员账号'”,
这样果然实现了 坐等2.0.8

如何遍历查询结果[2.0]

likelyKeo阅读(42)

$query = $command->queryAll() 获取了sql查询结果,然后render给前端,
前端用 foreach($query as $value) 显示$value->id 时出错:Trying to get property of non-object
如果用模型获取数据(Models::find())进行遍历是没有问题的,但我想用自定义的sql语句查询结果进行遍历,该怎么做?

你用原生sql查询出来的结果,应该是数组,所以,问题不是不能遍历,而是你应该取数组的值,比如$value[‘id’],而不是$value->id,最好的验证方式,就是你在render给前端前,var_dump出来看看查询出来的结果的数据格式。然后根据格式在前端用相应的方式遍历取值即可

使用\Yii::$app->user->isGuest;登陆前状态为1登陆后如下报错[2.0]

Bobdear阅读(40)

使用\Yii::$app->user->isGuest; 登陆前状态为1 登陆后 重新返回刷新登陆页面 就以下报错
没有user表,我数据库表是users。但是这个user是在哪里调用的?
Database Exception – yii\db\Exception

SQLSTATE[42S02]: Base table or view not found: 1146 Table 'qichunzhan.user' doesn't exist
The SQL being executed was: SELECT * FROM `user` WHERE (`id`='1') AND (`status`=10)
Error Info: Array
(
    [0] => 42S02
    [1] => 1146
    [2] => Table 'qichunzhan.user' doesn't exist
)
↵
Caused by: PDOException

SQLSTATE[42S02]: Base table or view not found: 1146 Table 'qichunzhan.user' doesn't exist

in /Users/chenqi/NetBeansProjects/WEB/GitOschina/qichunzhan/vendor/yiisoft/yii2/db/Command.php at line 839

去User模型里把表改成users
那个user表最好不要动,楼主,除非熟悉了再动,我吃过很多亏.
应该在 common/models/user.php 在这里看看登录的
也有可能在你的loginform里面

yii2怎么设置网站logo?[2.0]

youthpony阅读(37)

yii2 怎么设置网站logo

在/layouts/main.php中如下定义
我的为什么不行啊,还是yii自带的logo
已解决,谢谢

我想问一下关于命名空间的事,麻烦了解的人进来看一下[2.0]

Bobelephant阅读(41)

命名空间
比如yii2.0某个控制器里要调用系统自带的控制器
use yii/web/Controller
请问这个后半部分是路径吗?
但是我查了一下这个文件,它是在’XXX/yii2/web/controller’这个目录下,它自己里面写的命名空间是namespace yii/web
这个倒是和使用时是对应的,可是却不是路径啊,就算是路径应该也是yii2/web/ 但是我两边都改成yii2却是出现问题,麻烦哪位明白的朋友跟我说一下命名空间这一块,谢谢了

yii2的命名空间完全取决于别名!多了解一下别名,就知道具体是怎么自动加载的了。楼上几个木说到点上。
还可以参见一下这个地址:http://www.yiichina.com/tutorial/395 里面写的很详细。
命名空间 跟路径应该没啥关系吧,它想怎么命名就怎么命名。
yii2的命名空间是根据它文件自己的命名空间决定怎么调用的。比如:就像你说的,use yii/web/Controller,它是在XXX/yii2/web/controller这个目录下,它自己写的命名空间是namespace yii/web,那么在其他的控制器中调用的话,命名空间就是:它自己的命名空间,加上它是属于什么文件。比如:它是属于控制器的,那么调用时的命名空间就是:文件自己的命名空间/文件类型(Controller/Model)。你可以在仔细看看,或者你看看第三方类是怎么调用的,它们的命名空间是如何写的,自己再试试,就找到感觉了。

高级怎么实现前后台分离?[2.0]

Hazellovely阅读(40)

类似这样的 
前台:http://www.demo.com/index.php
后台:http://www.demo.com/admin.php

我用的是该高级版,有front和backend两个模块,不会配置,求教!

你把www.demo.com所指向的目录配置到advanced目录下,
那么访问后台:http://www.demo.com/backend/web/index.php
访问到前台:http://www.demo.com/frontend/web/index.php
但是这样,url就比较长了,所以,你最好分配两个域名,比如后台域名为:backend.demo.com,然后这个域名目录直接指向到advanced/backend/web目录下,那么你访问的时候:http://backend.demo.com/index.php 就访问到后台
前台配置也类型,比如域名为frontend.demo.com,然后这个域名目录直接指向到advanced/frontend/web目录下,那么你访问的时候:http://frontend.demo.com/index.php 就访问到前台
生产环境中,这种方式用的也不少,一般把域名配置到公司首页,比如:www.demo.com,然后公司的管理后台用二级域名。
当然,还有其他的解决方案。看你习惯配置成哪种。
如果是本地环境,可以通过配置hosts文件,也可以通过端口来区分。
其实很好处理的,已经内置给你考虑周到了

登录

找回密码

注册