yii2 框架进阶

params['breadcrumbs']的意义:显示一个导航条 数组里可以链接名称和链接地址 URL为控制器下所属方法

$this->params['breadcrumbs'][] = ['label' => 'Test2s', 'url' => ['entry']];

hasMany、hasOne使用

    一对多:hasMany

    一对一:hasOne

    返回结果:这两个方法的返回结果y都为yii\db\ActiveQuery对象

    第一个参数:所关联的模型的类名称。

    第二个参数:是一个数组,其中键为所关联的模型中的属性,值为当前模型中的属性。

多表联查,asArray() 返回结果为数组形式

Relation::find()->joinWith('programmer')->joinWith('Project')->asArray()->all(); 多表联查joinWith()

session的使用:

    $session = Yii::$app->session; //调动session

    $session->set('name','root');  //设置session

    $session->get('name'); //获取session

    $session->remove('name'); //清除session

分页类的使用Pagination

    use yii\data\Pagination;

    $total = Admin::find()->count(); //获取分页总数

    $pages = new Pagination(['totalCount' => $total, 'pageSize' => '2']); //实例化分页类给定分页参数

    $rows=Admin    ::find()->offset($pages->offset)->limit($pages->limit)->all(); //获取数

    Return $this->render(‘oper’,[‘rows’=>1,’pages’=>$pages]); //显示模板传值

    <?= \yii\widgets\LinkPager::widget(['pagination' => $pages]); ?> //模板显示

    //视图中修改样式

    <?php echo yii\widgets\LinkPager::widget([

        'pagination' => $pages,

        'firstPageLabel' => '首页',

        'lastPageLabel' => '末页',

        'prevPageLabel' => '上一页',

        'nextPageLabel' => '下一页',

    ]); ?>

单文件上传:

model中的代码Upload.php:

<?php

namespace backend\models;

use Yii;

use yii\web\UploadedFile;

class Upload extends \yii\db\ActiveRecord{

    public $file;

    public function rules(){

    return [

        [["file"], "file",],

        ];

    }

}

view模板中:

<?php

use yii\widgets\ActiveForm;

$form = ActiveForm::begin(["options" => ["enctype" => "multipart/form-data"]]); ?>//设置文件上传

<?= $form->field($model, "file")->fileInput() ?>

<button>Submit</button>

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

控制器:

namespace backend\controllers;

use backend\models\Upload; //调用model类

use yii\web\UploadedFile; //调用上传基类

class ToolsController extends \yii\web\Controller{

    public function actionUpload (){

        $model = new Upload(); //实例化上传类

        $uploadSuccessPath = ""; //上传成功的路径

        if (Yii::$app->request->isPost) {

            $model->file = UploadedFile::getInstance($model, "file");

            $dir = "../../public/uploads/".date("Ymd"); //上传路径

            if (!is_dir($dir))

            mkdir($dir); 如果路径不存在 创建路径

            if ($model->validate()) {

                $fileName = date("YmdHis").$model->file->baseName . "." . $model->file->extension;上传文件名

                $dir = $dir."/". $fileName;

                $model->file->saveAs($dir);//文件保存到指定目录中

                $uploadSuccessPath = "/uploads/".date("Ymd")."/".$fileName;

            }

        }

        return $this->render("upload", ["model" => $model,"uploadSuccessPath" => $uploadSuccessPath,]);

    }

}

小部件基本在views中使用,调用 yii\base\Widget::widget() 方法使用小部件

时间小部件:

<?php

use yii\jui\DatePicker;

?>

<?= DatePicker::widget([

    'model' => $model,

    'attribute' => 'from_date',

    'language' => 'ru',

    'clientOptions' => [

        'dateFormat' => 'yy-mm-dd',

    ],

]) ?>

登录小部件:

<?php

use yii\widgets\ActiveForm;

use yii\helpers\Html;

?>

<?php $form = ActiveForm::begin(['id' => 'login-form']); ?>

    <?= $form->field($model, 'username') ?>

    <?= $form->field($model, 'password')->passwordInput() ?>

    <div class="form-group">

        <?= Html::submitButton('Login') ?>

    </div>

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

创建小部件:

继承 yii\base\Widget 类并覆盖 yii\base\Widget::init() 和/或 yii\base\Widget::run() 方法可创建小部件。通常init() 方法处理小部件属性, run() 方法包含小部件生成渲染结果的代码。 渲染结果可在run()方法中直接"encode"输出或以字符串返回。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章