谁一开始就是大神?

PHP 第80页

PHP

AssetBundleUpdateNotWorking[2.0]

JasonLion阅读(30)

剛使用 AssetBundle 調整 js 前後順序

位置是 protect/modules/order/assets

namespace app\modules\order\assets;

use yii\web\AssetBundle;

class Asset extends AssetBundle
{
    public $sourcePath = '@app/modules/order/js';
    public $publishOptions = [
        'forceCopy' => true
    ];
    public $css = [

    ];
    public $js = [
        'crud.js',
    ];
    public $depends = [
        'yii\web\YiiAsset',
        'yii\bootstrap\BootstrapAsset',
        'app\assets\AppAsset',
    ];
}

當我修改 js 時候, 重整畫面時
web/asset/xxxxx 都不會更新
所以嘗試 =>

public $publishOptions = [
    'forceCopy' => true
]; //效果一樣沒有成功

看網路解說也在設定的地方加上了 linkAssets
但看官網說明的方式又不太符合我的要求… (也可以說有點看不懂)

'components' => [
       'assetManager' => [
            'linkAssets' => true,
        ],
]

有甚麼辦法能在 時更新在 asset 載入的 js 呢!!

这应该是有缓存吧.
你清除下你本地缓存看看

2.0集成第三方类库[2.0]

lionfrog阅读(30)

我在yii2中要使用阿里百川的类库,它带有一个autoloader的php,我在入口脚本index.php里面引入了,那么我怎么在controller里面引用她的类啊

直接使用,因为你引用了autoloader,它会自动引入的
要看第三方有没有使用命名空间了,如果有就需要引用他的命名空间,如果没有那就要使用 “\”
我也是上周刚了解的,没有用命名空间的类库,include之后,就相当于在根命名空间中一样了

请问ActiveForm的textInput可以设置缺省值么?[2.0]

lionslim阅读(30)

如题,类似dropDownList里面的prompt的那种实现,例如表单中针对该文本框没有值的时候展示缺省值,有值的时候展示实际值。

可以在model里指定默认值,详情参考手册的核心验证器
http://www.yiichina.com/doc/guide/2.0/tutorial-core-validators
// 若 "country" 为空,则将其设为 "USA"
['country', 'default', 'value' => 'USA']
这种情况应该用 placeholder 吧,如果不符合你的要求,只写用 js 去实现了。
可以在controller逻辑中,在render数据的时候初始化默认值
在action中render的时候赋值

期望在上传文件的时候自动按时间创建文件夹,以保存上传文件[2.0]

lionpony阅读(27)

model代码如下:

public function upload(){
    if($this->validate()){
        if(!file_exists('upuploads/'.date('Y/m/d',time()))){
            mkdir('upuploads/'.date('Y/m/d',time()));
        }
        $this->imageFile->saveAs('uploads/'.date('Y/m/d',time()).'/'.rand(000,999).'.'.$this->imageFile->extension);
        return true;
    }else{
        return false;
    }
}
  1. 报错:mkdir(): No such file or directory
  2. 尝试解决:修改uploads的权限为777,但未来创建的文件夹都没有777权限

linux服务器 mkdir() 后加 chmod()

如何扩展YII提供的uploadfile类?[2.0]

lionKeo阅读(29)

请教一下,如果要扩展一个yii的类库,比如继承uploadfile类做一个缩略图类,有没有啥标准的写法?
自己写的类放到哪个文件夹合适?如何做到自动加载?

看看文档 在config里配置aliases,这样你可以做你想干的了

GridView格式化日期两种格式化的疑问?[2.0]

likelydolphin阅读(29)

输入图片说明

'format' => ['date', 'Y-m-d H::i::s'], 格式化时间前面2条记录错误了,而且只错了月份,而后2条记录的时间确实正确的

确认过数据库,红色框部分是正确的

求解疑惑???

'format'=>['date', 'php:Y-m-d H:i:s']
设置一下timeZone.

YII2在modules中使用验证码验证失效问题[2.0]

Neocrab阅读(29)

最近学习下yii2框架,在验证码这块遇见了验证失败的问题,验证图片能出来,可是无论怎么输都是错误的,下面上代码:

结构
  models
   User.php
  modules
   admin
    controllers
     DefaultController
    views
     default
      index.php

控制器代码

<?php

namespace app\modules\admin\controllers;
use app\models\User;
use Yii;
use yii\web\Controller;
use yii\helpers\Url;

class DefaultController extends Controller
{
    public function actions()
    {
        return [
            'error' => [
                'class' => 'yii\web\ErrorAction'
            ],
            'captcha' => [
                'class' => 'yii\captcha\CaptchaAction',
                'backColor'=>0x000000,//背景颜色
                'width' => 120,
                'height' => 40,
                'padding' => 0,
                'minLength' => 4,
                'maxLength' => 4,
                'foreColor'=>0xffffff,     //字体颜色
                'offset'=>8,        //设置字符偏移量 有效果
                'testLimit'=>999,
            ],
        ];
    }
    public function actionIndex()
    {
        Yii::$app->controller->layout='main';
        if (!\Yii::$app->user->isGuest) {
            $this->redirect(Url::toRoute('platform/index')); //已登录直接跳转
        }
        $model = new User(['scenario' => 'login']);//实例化的是登陆场景
        if($model->load(Yii::$app->request->post())&&$model->login()){
            $this->redirect(Url::toRoute('platform/index')); //已登录直接跳转
        }else{
            return $this->render('index',[
                'model'=>$model,
            ]);
        }
    }
}

模型代码

class User extends \app\core\base\BaseActiveRecord implements IdentityInterface
{
    //登录时使用,记住我,验证码,加密后密码
    public $rememberMe = false;
    public $verifyCode;
    public $password_hash;

    /**
     * @inheritdoc
     */
    public static function tableName()
    {
        return '{{%user}}';
    }

    /**
     * @inheritdoc
     */
    public function rules()
    {
        return [
            //登录场景
            [['username','password','verifyCode'], 'required'],
            [['username', 'password'], 'string', 'max' => 255],
            ['username', 'string', 'length' => [2, 18], 'on' => 'login'], //长度验证
            ['password', 'string', 'length' => [6, 22], 'on' => 'login'],
            ['password', 'validatePassword', 'on' => 'login'], //调用validatePassword
            ['verifyCode', 'captcha', 'on' => 'login'], //验证码
        ];
    }

    /**
     * @inheritdoc
     */
    public function attributeLabels()
    {
        return [
            'username' => '用户名',
            'password' => '密码',
            'verifyCode'=>'验证码',
        ];
    }

    public function scenarios() {
        $scenarios = parent::scenarios();
        $scenarios['login'] = ['username', 'password', 'rememberMe','verifyCode'];
        return $scenarios;
    }

视图代码

<?php
use yii\helpers\Html;
use yii\bootstrap\ActiveForm;
use yii\captcha\Captcha;
use app\assets\AppAsset;
$this->title='登陆';
AppAsset::register($this);
?>
<h1><?= Html::encode($this->title) ?></h1>
<?php $form=ActiveForm::begin([
    'fieldConfig' => [
        'template' => "{label}{input}{error}",
    ],
])?>
<div class="clearfix"></div>

<?= $form->field($model, 'verifyCode')->widget(Captcha::className(), [
    'template' => '<div class="input-group input-group-lg col-md-8"><span class="input-group-addon"><i class="glyphicon glyphicon-eye-open red"></i></span>{input}<div class="input-group-addon" style="padding:5px;">{image}</div></div>',
    'options' => ['class' => 'form-control','placeholder'=>"验证码"],
    'captchaAction' => 'default/captcha',
])->label(false) ?>
<div class="clearfix"></div>
<?= $form->field($model, 'rememberMe', [
    'template' => "<label class=\"remember\">{input}记住我</label>",
    'options'=>['class'=>"input-prepend"],
    'labelOptions'=>['class'=>"remember"],
])->checkbox()->label('记住我')?>
<div class="form-group">
    <div class="col-lg-offset-1 col-lg-11">
        <?= Html::submitButton('Login', ['class' => 'btn btn-primary', 'name' => 'login-button']) ?>
    </div>
</div>
<?php ActiveForm::end();?>

图片可以出来可是验证一直不对,希望有大神不吝赐教。

貌似User中的规则rules里的验证码部分要指定下action位置,因为我看你是在modules用的,如:
赞一个,的确是 'captchaAction'=>'admin/default/captcha' 的问题

有知道怎么用dektrium/yii2-user这个扩展的吗?注册后验证邮件发送失败[2.0]

AibyLion阅读(31)

配置好mailer,自己写controller能够发出邮件,我用的163和qq邮件都成功。但是用yii2-user注册后显示_Swift_TransportException Expected response code 250 but got code "501", with message "501 mail from address must be same as authorization user_。不知道怎么回事.我已经配置了模块

'modules' => [
    'user' => [
        'class' => 'dektrium\user\Module',
        'enableUnconfirmedLogin' => true,
        'confirmWithin' => 21600,
        'cost' => 12,
        'admins' => ['admin'],
             ],     
        ],
    ]
]

这是反垃圾邮件系统约束条件,501 mail from address must be same as authorization user 已经讲得很清楚了。
修改一下Mailer.phpsendMessage()函数中的setFrom($this->sender)语句的参数,改成和你配置mailer时用的邮件地址一样即可。
在config目录下的params.php
adminEmail的设置也要修改。
我的设置,首先我用的是basic版
在config/web.php中
/*’user’ => [
*/将原来的user注释掉,
在components中添加:
‘mailer’ => [
然后在components外添加:
‘modules’ => [
在config/param.php中
//’adminEmail’ => ‘admin@example.com’, 改为

yiicreateCommand从数据库查出来的数据都变成了字符串格式[2.0]

Wendylemon阅读(29)

最近用YII做一个后台项目, 因为要转化成json呈现出来,发现直接用php的 json_encode()直接转化createCommand()->…出来的数据都变成了字符串格式,原本很普通的int也被加了引号.

ps: 自己手写数组就用json_encode()就不会.

这个createCommand官方文档也没说.

这个与YII没关系,是PDO的默认处理,解决方法只需在配置中的db配置中加上attributes的相关配置就行了,如下:
你确定int不是字符整型数? 你可以指定json_encode的第二个参数为JSON_NUMERIC_CHECK试一下能否解决这个问题。

YII2中markdown编辑器的使用[2.0]

Niceyak阅读(28)

本人看到了论坛里面有个朋友发了markdown的安装教程,现在也能成功显示了,现在不清楚如何在编辑页面显示文章原来的内容,以达到修改的目的。
现在已有视图代码

<?php $form = ActiveForm::begin(); ?>
    <?= Markdowneditor::widget(['model' => $model, 'attribute' => 'body']) ?>
    <div class="form-group">
        <?= Html::submitButton($model->isNewRecord ? 'Create' : 'Update', ['class' => $model->isNewRecord ? 'btn btn-success' : 'btn btn-primary']) ?>
    </div>

    <?php ActiveForm::end(); ?>

现在已有控制器代码

public function actionUpdate($id){
        $model=new Post();
        return $this->render('update',['model'=>$model]);
    }

数据库存的是md源代码,输出的也是md源代码,但是输出前需要format一下,可以使用 yii\helpers\Markdown::process(“内容”)

登录

找回密码

注册