Lab / YII

YII2 Создание простой страницы и вывод данных из БД

В этой короткой заметке я покажу как создать новую страницу в базовом контролере сайта на YII2 и вывести туда записи из вашей БД. Итак предположим что вы уже создали ваш YII2 Basic сайт, подключили его к базе данных. Давайте в основном контролере controllers/SiteController.php добавим новую страницу и выведем на неё данные которые мы вручную закинем в таблицу БД. Итак в файл контроллера controllers/SiteController.php перед последним закрывающим } вставляем следующий код:

 /**
 * Displays blog page.
 */
 public function actionBlog()
 {
 $array = BlogList::getAll();
 return $this->render('blog',['varInView' => $array]);
 }

А так же в вехней части подключим модель которую мы сейчас создадим: use app\models\BlogList; // Custom Blog Model

Давайте теперь создадим ту самую модель, которая будет выбирать данные из БД. Для этого в папке models создадим файл BlogList.php со следующим содержимым:

<?php

namespace app\models;

class BlogList extends \yii\db\ActiveRecord{

 public static function tableName()
 {
 return 'blog'; // Имя таблицы в БД в которой хранятся записи блога
 }


 public static function getAll()
 {
 $data = self::find()->all();
 return $data;
 }

}

Теперь в папке views/site необходимо создать файл blog.php можно это сделать, посредством дублирования и переименования файла about.php расположенного в этой же папке. Содержание должно быть следующим:

<?php

/* @var $this yii\web\View */

use yii\helpers\Html;

$this->title = 'Blog';
$this->params['breadcrumbs'][] = $this->title;

print_r ($arrayInView);

?>
<div class="site-about">
 <h1><?= Html::encode($this->title) ?></h1>

 <?php foreach ($varInView as $item): ?>
 <h2><?php echo $item->blog_title ?></h2> // Имы ячейки в таблице должно быть соответственно blog_title
 <?php endforeach ?>

</div>

Теперь можно перейти по ссылке site/blog и посмотреть что у на сполучилось!