Tags

, , ,

Fitur ini sudah ada sejak Yii1, jadi mungkin tidak terlalu wah lagi. Tetapi mungkin juga belum banyak ngeh dengan fitur ini. Di Yii1 kita memakai CViewAction. Lupakan Yii1, tulisan ini sepenuhnya dibuat menurut kode Yii2 :D.
Sebenarnya disebut “halaman statis” juga tidak benar-benar tepat karena kita tetap menggunakan php untuk menggenerate page. Hanya saja page ini tampak lebih hardcoded dibanding page lain karena kita tidak harus membuat kontroller atau action untuk menampilkannya.
OK, misalkan kita akan menggunakannya di SiteController, maka di method action, tambahkan baris berikut

public function actions()
{
    return [
        'error' => [
            'class' => 'yiiwebErrorAction',
        ],
        'page' => [
            'class' => 'yiiwebViewAction',
        ],
    ];
}

Setelah itu buat folder pages di bawah folder @app/views/site. Maka semua file php di bawah folder @app/views/site/pages dapat ditampilkan dengan mengakses

index.php?r=site/page&view=namafile

Jika anda sudah membaca tulisan saya sebelumnya, anda bisa mencoba kode berikut. Buat sembarang file, katakanlah test1.php di bawah folder @app/views/site/pages, isi dengan

<?php

use yii\base\DynamicModel;
use yii\helpers\Html;
use yii\widgets\ActiveForm;

// definisi model
$model = new DynamicModel([
    'nama', 'file_id'
    ]);

// behavior untuk upload file
$model->attachBehavior('upload', [
    'class' => 'mdm\upload\UploadBehavior',
    'attribute' => 'file',
    'savedAttribute' => 'file_id'
]);

// rule untuk model
$model->addRule('nama', 'string')
    ->addRule('file', 'file', ['extensions' => 'jpg']);

if ($model->load(Yii::$app->request->post()) && $model->validate()) {
    if ($model->saveUploadedFile() !== false) {
        Yii::$app->session->setFlash('success', 'Upload Sukses');
    }
}
?>

<div>
    <?php
    $form = ActiveForm::begin([
            'options' => [ 'enctype' => 'multipart/form-data']
    ]);
    ?>
    <?= $form->field($model, 'nama'); ?>
    <?= $form->field($model, 'file')->fileInput(); ?>
    <?php if ($model->file_id): ?>
        <div class="form-group">
            <?= Html::img(['/file', 'id' => $model->file_id]) ?>
        </div>
    <?php endif; ?>

    <div class="form-group">
        <?= Html::submitButton('Submit', ['class' => 'btn btn-primary']) ?>
    </div>
    <?php ActiveForm::end(); ?>
</div>

Lalu buka dari browser

index.php?r=site/page&view=test1

Penampakannya
Screenshot from 2014-10-19 09:49:15-2

Advertisements