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"輸出或以字符串返回。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章