谁一开始就是大神?

PHP 第39页

PHP

rules自己写的规则失效[2.0]

littlesea阅读(61)

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." } }

求解呐~

補充樓上
建議 看一下 scenarios 的實作, (底下有附上連結)
你的 methodName 好像也拼錯
而且 scenarios 內部的情境應該是接陣列巴 (字串我是沒用過~~)
http://www.yiiframework.com/doc-2.0/guide-structure-models.html#scenarios
你的那个控制器中,设置场景,场景名与数据中的不匹配, 然后, 先打印是否post传值存在,然后判断load加载是否成功,然后判断validate()是否成功; “Incorrect username or password”:用户名或密码错误

excel文件导出[2.0]

Newlove阅读(52)

使用phpexcel导出文件,文件地址是一个url地址,错误提示:找不到文件。。。。。。。
文件上传到了七牛上,我应该如何读取这个excel中的数据,七牛提供的api获取下来的还是url地址

从七牛上下载到代码服务器然后再进行读取,然后通过phpExcelReader等才做读取,比如:
下载下来 phpExcelReader
引入PHPExcel类
然后就可以使用类的相关方法读取
PHPExce

yii2配置支付宝接口遇到的问题(notify_url没有操作)[2.0]

Kimcrab阅读(52)

$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找不到这个文件?那我应该怎么修改啊?

使用迁移脚

fationFox阅读(52)

如何使用迁移脚本(migrate)修改表的字符编码?

关于yii2使用composer安装模块/扩展的问题(10分赏金)[2.0]

Niceelephant阅读(58)

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正确安装的时候,便已实现了自动加载而无需你做任何事的。

地址中的控制器和方法的隐藏[2.0]

Jasonapple阅读(54)

例如本来的的页面地址是www.test.com/xxcontroller/xxfunction

然后被隐藏成了www.test.com/#2_1这样的

这种情况下我用ajax去请求xxcontroller/xxfunction就不对了

问题来了:如何在隐藏了控制器方法的情况去正确得到返回数据??

Url::to()不可行?
隐藏功能用过,ajax用过。
没试过ajax调用隐藏的功能。
不能直接调用?不都是http请求吗?

查询[2.0]

HaHapple阅读(54)

$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();

有人弄过流媒体服务器吗只是简单的视频播放

TinaLion阅读(52)

只是简单的视频播放 但是视频有点大每个大概80M左右 需要支持手机端 有人接触过这个吗

直接用百度云或者阿里云的视频播放不行么?百度的我用过 ,直接放在BOS里,就可以拿到地址播放。
BOS里什么意思 大神

有使用docker做开发环镜的吗?[2.0]

KimEagle阅读(57)

'class' => 'yii\db\Connection',
'dsn' => 'mysql:host=127.0.0.1;dbname=data',
'username' => 'root',
'password' => 'root',
'charset' => 'utf8mb4',

为什么 这样子配置会出事服务器连接不上数据库的状态 ?

Database Exceptionyii\db\Exception

SQLSTATE[HY000] [2002] Connection refusedCaused 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’,`

Yii2.0andFilterWhere用法[2.0]

Slyelephant阅读(54)

$query->andFilterWhere(['not like', 'name', $this->name])
    ->andFilterWhere(['like', 'keywords', $this->keywords])
    ->andFilterWhere(['like', 'desc', $this->desc])
    ->andFilterWhere(['like', 'thumb', $this->thumb])
return $dataProvider;

如果是“ = ”,那么like要改为什么呢?

直接改成=就可以
直接把like改为 = ,就行了吧
>where(['last_name' => 'Smith'])

登录

找回密码

注册