我正常通过浏览器访问百度首页,然后F12查看cookie,会得到以下cookie数据。
那如果我用PHP直接去访问百度首页,我怎样才能获取到这个cookie呢?
这看你要用什么方式了,如果使用的是curl,有对应的参数设置就可以获取 curl_setopt($curl, CURLOPT_COOKIE, $cookie);
我正常通过浏览器访问百度首页,然后F12查看cookie,会得到以下cookie数据。
那如果我用PHP直接去访问百度首页,我怎样才能获取到这个cookie呢?
这看你要用什么方式了,如果使用的是curl,有对应的参数设置就可以获取 curl_setopt($curl, CURLOPT_COOKIE, $cookie);
dataProvider = new ActiveDataProvider([
'query' => $data,
'pagination' => [
'pageSize' => 10,
],
]);
这个query=>可以是数组嘛,如果是数组格式的话,怎么用dataProvider 分页
searchmodel配置呀
根据ActiveDataProvider中可以知道:
说明$query数据是model
把数组转成model了,有点好奇,数组为什么要分布呢,只为了方便浏览吗?
差不多吧。
疑问 , 这个流程本身是这样 还是我的错了 如果业务需求频繁, 这个有点蛋疼呀, 而且是必须配置的
init 是用以初始化项目确定项目是处于生产还是开发环境的。并不是你说的用以更新项目的。也就是说,在你电脑爆炸前,你基本上只会用到一次 init。
如果你需要新增 db2,则只需要将 db2 写入main.php,那么别人拉取代码的时候就会获得你的 db2 。并且即使执行 init ,也不会影响到你的 main.php。
不能通过.json把main-local.php忽略掉么?
可以模仿laravel配置做法,就可以解决这种问题
加db2时把db1删除了?
现在有一个短信的SDK 我怎么能把它融入到Yii2 框架里面呢?有哪位知道!!!!急求
他的里面存在一些require 有自己的自动加载器
在你的frontend目录新建一个component文件夹。。把短信的sdk集成改为一个类文件,放在component文件夹里面。并写好命名空间。然后在config里面的main.php的components数组加入我后面那张图片的参数。class写你的短信类的路径,下面的alipay_config参数是调用自己配置的第三方类的时候直接帮你初始化配置参数了。相当于__construct函数。这里应该填你的短信sdk的appid和密钥之类的
控制器中直接Yii::$app->h5alipay->functionname();就是直接调用引用的sdk的方法
加不了。。。。还要验证。。你用的是谁家的短信?
sdk不都全是方法吗。。。。根据实际情况。。。合并代码啊。。。我只能告诉你方法。。。具体怎么做是要看你自己的。。。多折腾一下
楼主的意思是sdk是一个文件夹,你在这个sdk里面写一个类调用方法,然后引入这个类就好了
yii2 加载 视图之前要对模型里的数据进行处理,是否是在beforeRender里操作呢?
具体用法是?
在你对应的search.php中,找到:
$dataProvider = new ActiveDataProvider([
这是对应表的所有数据,要处理可以加条件,比如
‘query’ => $query->where([‘username’=>$username])
models中用fields方法可处理
不是beforeRender里操作,觉得可以在获取数据模型前处理,或在视图里处理,如果是业务逻辑的话可以直接在模型里定义好方法
action加载了数据传给view,可以在action中处理完数据再传给view
不太理解加载视图之前,数据绝大多数都是在渲染视图之前处理的嘛,还有你说的处理是怎样的处理?
$userOpenId = new UserOpenId([
'openid'=>(string)$openId,
'opentype'=>$openType,
'userName'=>$userName
]);
if($userOpenId->save()){
$id = $userOpenId->attributes['id'];var_dump($id);exit;
}
public function rules()
{
return [
[['id'], 'integer'],
[['userId'], 'integer'],
[['opentype'], 'string', 'max' => 60],
[['userName'], 'string', 'max' => 60],
[['openhash'], 'string', 'max' => 32],
[['openid'], 'string', 'max' => 255],
[['opentype', 'openhash'], 'unique', 'targetAttribute' => ['opentype', 'openhash'], 'message' => 'The combination of Opentype and Openhash has already been taken.'],
];
}
id 在数据库里有没有设置为自动递增
public function actionUpdate($id)
{
$model = $this->findModel($id);
if ($model->load(Yii::$app->request->post()) && $model->save()) {
return $this->redirect(['view', 'id' => $model->id]);
} else {
// print_r($model->getErrors());
// exit;
return $this->render('update', [
'model' => $model,
]);
}
}
数据库的读取没有问题。就是新建,更新不行。$model->load(Yii::$app->request->post()) 这个条件没毛病。用navicate可以手动更改数据库。我这个博客就是魏曦老师的blogdemo2他在视频里就没有报错,不知道大家有没有听过他的视频。
$model->load(Yii::$app->request->post())
这里没有成功载入
save 之前打印下 $model 看$model->id有没有值,没值的话,save肯定是新建啊
本地做了一个项目,可以正常运行,直接拷贝到服务器上也可以正常运行,但是用git上传到服务器的话会出现403(前提是我已经给了777权限,allowip我也设置了),这种情况应该怎么破?
这跟git有关系?
git只是帮你把文件搬运到服务器上去。
估计你不是所有的配置都纳入git管理了,或者说你把本地的配置通过git传上服务器了。
vendor 少了这个composer一下就可把这个文件给拉下来
`Problem 1
- yiisoft/yii2-mongodb 2.1.2 requires ext-mongodb >=1.0.0 -> the requested PHP extension mongodb is missing from your system.
- yiisoft/yii2-mongodb 2.1.1 requires ext-mongodb >=1.0.0 -> the requested PHP extension mongodb is missing from your system.
- yiisoft/yii2-mongodb 2.1.0 requires ext-mongodb >=1.0.0 -> the requested PHP extension mongodb is missing from your system.
- Installation request for yiisoft/yii2-mongodb ~2.1.0 -> satisfiable by yiisoft/yii2-mongodb[2.1.0, 2.1.1, 2.1.2].
To enable extensions, verify that they are enabled in those .ini files:
- /etc/php/7.0/cli/php.ini
- /etc/php/7.0/cli/conf.d/10-opcache.ini
- /etc/php/7.0/cli/conf.d/10-pdo.ini
- /etc/php/7.0/cli/conf.d/15-xml.ini
- /etc/php/7.0/cli/conf.d/20-calendar.ini
- /etc/php/7.0/cli/conf.d/20-ctype.ini
- /etc/php/7.0/cli/conf.d/20-curl.ini
- /etc/php/7.0/cli/conf.d/20-dom.ini
- /etc/php/7.0/cli/conf.d/20-exif.ini
- /etc/php/7.0/cli/conf.d/20-fileinfo.ini
- /etc/php/7.0/cli/conf.d/20-ftp.ini
- /etc/php/7.0/cli/conf.d/20-gettext.ini
- /etc/php/7.0/cli/conf.d/20-iconv.ini
- /etc/php/7.0/cli/conf.d/20-json.ini
- /etc/php/7.0/cli/conf.d/20-mbstring.ini
- /etc/php/7.0/cli/conf.d/20-phar.ini
- /etc/php/7.0/cli/conf.d/20-posix.ini
- /etc/php/7.0/cli/conf.d/20-readline.ini
- /etc/php/7.0/cli/conf.d/20-shmop.ini
- /etc/php/7.0/cli/conf.d/20-simplexml.ini
- /etc/php/7.0/cli/conf.d/20-sockets.ini
- /etc/php/7.0/cli/conf.d/20-sysvmsg.ini
- /etc/php/7.0/cli/conf.d/20-sysvsem.ini
- /etc/php/7.0/cli/conf.d/20-sysvshm.ini
- /etc/php/7.0/cli/conf.d/20-tokenizer.ini
- /etc/php/7.0/cli/conf.d/20-wddx.ini
- /etc/php/7.0/cli/conf.d/20-xmlreader.ini
- /etc/php/7.0/cli/conf.d/20-xmlwriter.ini
- /etc/php/7.0/cli/conf.d/20-xsl.ini
You can also run php --ini
inside terminal to see which files are used by PHP in CLI mode.`
使用的是php 7.0.7,请教大神指点
找到问题了,你安装的是mongo的扩展,没有安装mongodb扩展,安装方式如下:
骚年你mongo扩展版本太低,用pecl重新装个最新的mongodb扩展
不是扩展版本问题,1.2.2的mongodb扩展已经是最新的了
问题解决了吗?
//导出中奖数据
public function actionExport() {
$join = KynhJoin::find()->orderBy('chip_num desc,id asc')->all();
$data = Gic::convert('昵称,姓名,电话,年画数,代言积分,奖品') . PHP_EOL; //编码转换
foreach ($join as $k => $v) {
$prize = '';
if ($v->pid > 0) {
$prize = $v->prize->name;
}
$line = preg_replace("/[\n\r,\"\,]+/", " ", $v->user->nickname) . ',' . $v->name . ',' . $v->tel . ',' . $v->chip_num . ',' . $v->integral . ',' . $prize . PHP_EOL;
$line = Gic::convert($line);
$data .= $line;
}
Gic::getCsv('kynh.csv', $data); //输出CSV文件
}
储存时用了序列化存储的方式,结果数据太多就导不出了?每次都是分开导出(没5000条导出一次),很不方便,各位请说明一下原因和比较优雅的解决方案?
可以通过console生成一个csv文件,需要的时候下载就是,算是一个异步思路吧。
5000量不大呀,你先确定你的导出能正常工作。
试下一次 500 或者 50
生成文件,然后一行一行的写入