只是简单的视频播放 但是视频有点大每个大概80M左右 需要支持手机端 有人接触过这个吗
直接用百度云或者阿里云的视频播放不行么?百度的我用过 ,直接放在BOS里,就可以拿到地址播放。
BOS里什么意思 大神
只是简单的视频播放 但是视频有点大每个大概80M左右 需要支持手机端 有人接触过这个吗
直接用百度云或者阿里云的视频播放不行么?百度的我用过 ,直接放在BOS里,就可以拿到地址播放。
BOS里什么意思 大神
'class' => 'yii\db\Connection',
'dsn' => 'mysql:host=127.0.0.1;dbname=data',
'username' => 'root',
'password' => 'root',
'charset' => 'utf8mb4',
为什么 这样子配置会出事服务器连接不上数据库的状态 ?
Database Exception – yii\db\Exception
SQLSTATE[HY000] [2002] Connection refused
↵
Caused by: PDOException
SQLSTATE[HY000] [2002] Connection refused
这是因为docker里面并没有安装数据库,127.0.0.1是docker容器里面的地址,使用这样的配置信息会找不到数据库,你需要填写你本机的ip地址,访问你本机的数据库,你可以使用ifconfig获取你本地的IP地址,假如是10.1.192.21,然后在配置文件中这样写
‘dsn’ => ‘mysql:host=10.1.192.21;dbname=data’,
‘username’ => ‘root’,
‘password’ => ‘root’,
‘charset’ => ‘utf8mb4’,
这样docker容器里面的网站就可以访问你本机的数据库了
没有,干嘛要用这个?
你数据库和你代码在一个docker里?用IP试试
host改为mysql的容器名称即可。
可以试试啊
host = mysql
一般都是 172 开头
两个容器处于同一网络,可以使用以下别名:
‘class’ => ‘yii\db\Connection’,
‘dsn’ => ‘mysql:host=com.app.mysql;dbname=data’,
‘username’ => ‘root’,
‘password’ => ‘123456’,
‘charset’ => ‘utf8mb4’,`
Controller代码:
$model = new \advanced\models\User;
//设置scenario
$model->setScenario( 'abc' );
//默认显示
if ( !Yii::$app->request->isPost ) {
return $this->render( 'login', [ 'model' => $model ] );
}
//接收参数并验证
if ( $model->load( $post = Yii::$app->request->post() ) && $model->validate() ) {
echo '跳转到用户中心去';
}
var_dump($model->getErrors());
model部份
//设置场景
public function scenarious()
{
return [
'login' => 'mobilenumber,password',
'register' => 'mobilenumber,email,password,sex',
];
}
public function rules()
{
return [
[ [ 'mobilenumber', 'password' ], 'required', 'on' => 'login' ],
[ [ 'password' ], 'validatePassword', 'on' => 'login' ],
];
}
view代码
<?php $form = ActiveForm::begin( [
'id' => 'login',
'enableAjaxValidation' => true,
'validationUrl' => Url::toRoute( [ 'validate-form' ] ),
] ); ?>
<?= $form->field( $model, 'mobilenumber' )->textInput( [ 'placeholder' => 'Username', 'class' => 'form-control input-lg' ] )->label(false); ?>
<?= $form->field( $model, 'password' )->passwordInput( [ 'placeholder' => 'Password', 'class' => 'form-control input-lg' ] )->label(false); ?>
<?= Html::submitButton( 'Login', [ 'class' => 'btn btn-primary' ] ); ?>
<?php ActiveForm::end(); ?>
结果点击login以后,跳转页面打印出errors
array(1) { ["password"]=> array(1) { [0]=> string(31) "Incorrect username or password." } }
求解呐~
補充樓上
建議@xiam 看一下 scenarios 的實作, (底下有附上連結)
你的 methodName 好像也拼錯
而且 scenarios 內部的情境應該是接陣列巴 (字串我是沒用過~~)
http://www.yiiframework.com/doc-2.0/guide-structure-models.html#scenarios
你的那个控制器中,设置场景,场景名与数据中的不匹配, 然后, 先打印是否post传值存在,然后判断load加载是否成功,然后判断validate()是否成功; “Incorrect username or password”:用户名或密码错误
使用phpexcel导出文件,文件地址是一个url地址,错误提示:找不到文件。。。。。。。
文件上传到了七牛上,我应该如何读取这个excel中的数据,七牛提供的api获取下来的还是url地址
从七牛上下载到代码服务器然后再进行读取,然后通过phpExcelReader等才做读取,比如:
下载下来 phpExcelReader
引入PHPExcel类
然后就可以使用类的相关方法读取
PHPExce
$alipay_config[‘return_url’] = “http://xxxx/frontend/web/index.php?r=order/return“;
可以验证成功。
但是,
$alipay_config[‘notify_url’] = “http://xxx/frontend/web/index.php?r=order/notify“;
根本没有任何操作。
nofity内容如下:
public function actionNotify(){
file_put_contents('test.txt', 'data');
}
换成 $alipay_config[‘notify_url’] = “http://xxx/frontend/web/test.php?r=order/notify“;
test.php 可以发现会生成了test.test
内容:
file_put_contents(‘test.txt’, ‘data’);
由于yii初始路由方式为index.php?r=XX/XX 所以后面也算是带参的url,在支付成功后会出现验证失败的情况,解决办法是更改alipy_core.function.php中的paraFilter()方法
function paraFilter($para) {
$para_filter = array();
while (list ($key, $val) = each ($para)) {
if($key == "sign" || $key == "sign_type" || $val == "" || $key == 'r')continue;
else $para_filter[$key] = $para[$key];
}
return $para_filter;
}
回调地址不允许这样&a=3这种带参数的形式 如果要带参数 请用pathinfo模式
楼主 为什么我下载的最新版支付宝 alipy_core.function.php找不到这个文件?那我应该怎么修改啊?
如何使用迁移脚本(migrate)修改表的字符编码?
yii2在项目根目录使用composer安装扩展的时候会自动安装到核心框架的文件里面
请问怎么直接安装到某个app里面?
如果可以直接安装到app里面,所安装的扩展的依赖组件又是如何处理安装的?
尝试过在backend文件夹下直接执行安装扩展的命令,但是会自动创建一个核心文件的文件夹,除了依赖组件外还讲yii2的核心框架在backend下又安装了一遍。
请大神解惑…
首先声明一下,我不是冲着你特意写在标题中的(10分赏金)来的。O(∩_∩)O哈哈~
在composer管理的项目里面,代码应该被分成两部分。一部分是自己写的,包括安装Yii高级或者基础版所默认提供的应用脚手架。另一部分就是那些第三方的包,说白了就是vendor目录。然后依靠composer提供的自动加载机制去使用那些包,于是你在index.php里发现了这么一句话
所以如果你想用composer管理你的项目依赖,包便不可以安装到你指定的APP下,因为那会再造就一个项目,而且是和原有项目毫不相关的一堆文件。
其实在composer眼里,一个composer.json就是一个包,就是一个项目。而你项目的composer.json已经在项目根目录下存在了。
其实composer 中文文档会解决你所有的疑惑,并且这是唯一正统的光明之道。
我也没有研究过Yii和composer各自的自动加载实现的过程,但他们必定遵循着一种规范,他就是 psr-4,这个链接会给你很大的帮助的。
另外,composer其实更准确来说称其为依赖管理工具较好,你所敲下的Yii代码实际上是依赖于 /vendor/yiisoft/ 下的各种包的。而当然,他们会依赖于其他各种包。为妥善管理这些依赖关系,composer就诞生了。
所以说,composer其实是比yii “大” 的,因为在composer的眼中,yii仅仅只是万千包中的一个。更别说其下的一个小小的extension.php文件了。那个文件应该是为了yii本身某些特别的需要,和composer自动加载没有关系的。
当你引入一个第三方包的时候,如果它提供了composer安装的方式,那他在被composer正确安装的时候,便已实现了自动加载而无需你做任何事的。
例如本来的的页面地址是www.test.com/xxcontroller/xxfunction
然后被隐藏成了www.test.com/#2_1
这样的
这种情况下我用ajax去请求xxcontroller/xxfunction
就不对了
问题来了:如何在隐藏了控制器方法的情况去正确得到返回数据??
Url::to()
不可行?
隐藏功能用过,ajax用过。
没试过ajax调用隐藏的功能。
不能直接调用?不都是http请求吗?
$count=Fields::find()->where('and','name=:name','table_name=:tableName')->addParams([':name' => $name,':tableName'=>$tableName])->count();
请问我这句错在哪里?
$count=Fields::find()->where('
name=:name and
table_name=:tableName',[':name' => $name,':tableName'=>$tableName])->count();
各位高手
小弟最近项目中需要运用到多语言,然后我的前端配置文件是
‘language’=>[’de’,’en’],
'sourceLanguage' =>'en',
'controllerNamespace' => 'frontend\controllers',
'components' => [
'i18n' => [
'translations' => [
'app' => [
'class' => 'yii\i18n\PhpMessageSource',
//'basePath' => '/messages',
'sourceLanguage' =>'en',
'fileMap' => [
'app' => 'app.php',
'app/error'=>'error.php',
],
],
],
],
我的程序已经设置好了,只要用户选择对应的国家就在cookie中设置好对应的语言,问题是在18n模块中怎么写配置呢?之前我的language=>’de’ 是可以使用德文的,如果我想用法文呢?
这样网上看见设置默认配置语言是看这个’language’=>[’de’,’en’],因为我后面可能还需要添加法语,这样能成吗?不能的话该如何配置呢?谢谢大家
可以在入口文件配置整个程序的语言啊,$application->language = isset($_COOKIE[‘language’]) ? ($_COOKIE[‘language’]) : ‘zh-CN’;
我没配置过,但我想应该是这样的 你那个’language’=>[$lang] 这里面值应该是个变量,在你改变语言时,操作这个变量就可以了。