<?php
namespace app\controllers;
use app\components\Pagination;
use app\components\Session;
use app\components\Validator;
use app\models\Tasks;
/**
* Class TasksController
* @package app\controllers
*/
class TasksController extends AppController
{
/**
* Метод выводит главную страницу
*/
public function indexAction($page = 1)
{
// заголовок страницы
$title = 'Главная страница';
/** @var $model Tasks */
$model = $this->model;
$session = new Session();
// если есть alias вставляем его в переменую page
if (!empty($this->route['alias'])) {
$page = $this->route['alias'];
}
// выводим список задач
$tasks = $model->getTasks($page);
// выводит количество задач
$countTasks = $model->getTasksCount();
// выводит пагинацию
$pagination = new Pagination($countTasks, $page, $model::SHOW_BY_DEFAULT, 'tasks/page/');
// переменная ошибок
$errors = '';
// простая валидация. можно было бы создать отдельный компонент и через него проводить валидацию
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$data = $_POST;
// валидация формы
$v = new Validator();
$v->validate($data, $model->rules(), $model->attribute());
$errors = $v->error();
if (!$errors) {
// создаем сессию success
$session->set('success', 'Вы успешно добавили задачу');
// добавляем данные в бд
$model->setTasks($data);
// редиректим
redirectFunction('/');
}
}
// передаем свойства в шаблон
$this->set(compact('title', 'tasks', 'countTasks', 'pagination', 'errors', 'session'));
}
}