Контроллер, самый ответственный класс приложения, именно он отвечает за формирование данных. Чаще всего именно с его создания начинается работа над сайтом. Принцип создания контроллера всегда одинаков, по этому стоит автоматизировать этот процесс.
Команда create/controller принимает один обязательный параметр - имя. Пример:
php e create/controller name
Будет создан файл app/controllers/nameController.php
<?php
namespace app\controllers;
use app\controllers\controller;
use electronic\core\view\view;
class nameController extends controller
{
public function index()
{
$this->title('');
new view('name', $this->data);
}
}
В имени файла допускается указывать путь:
php e create/controller dir/name
Будет создан файл app/controllers/dir/nameController.php
Существует несколько дополнительных параметров, на данный момент их три: v
, crud
и full
Параметр v
создаёт файл шаблона
php e create/controller dir/name v
Команда создаст два файла app/controllers/dir/nameController.php
и app/views/dir/name.php
Параметр crud
создаёт дополнительные методы в контроллере и соответствующие файлы шаблонов
php e create/controller dir/name crud
Команда создаст файл контроллера app/controllers/dir/nameController.php
<?php
namespace app\controllers;
use app\controllers\controller;
use electronic\core\view\view;
class nameController extends controller
{
public function index()
{
$this->title('');
new view('name/index', $this->data);
}
public function create()
{
$this->title('');
new view('name/create', $this->data);
}
public function update()
{
$this->title('');
new view('name/update', $this->data);
}
public function delete()
{
$this->title('');
new view('name/delete', $this->data);
}
}
и файлы шаблонов app/views/dir/name/index.php
app/views/dir/name/create.php
app/views/dir/name/update.php
app/views/dir/name/delete.php
Параметр full
php e create/controller dir/name full
Создаст файл контроллера app/controllers/dir/nameController.php
<?php
namespace app\controllers;
use app\controllers\controller;
use electronic\core\view\view;
use electronic\core\validate\validate;
class nameController extends controller
{
public function index()
{
$this->title('');
new view('name/index', $this->data);
}
public function create()
{
$this->title('');
new view('name/create', $this->data);
}
public function createAction()
{
$valid = new validate();
$valid->name('csrf')->csrf('');
if(!$valid->control()){
alert('Ошибка сохранения', 'danger');
redirect(referal_url(), $valid->data(), $valid->error());
}
//
alert('Успешно', 'success');
redirect(referal_url());
}
public function update()
{
$this->title('');
new view('name/update', $this->data);
}
public function updateAction()
{
$valid = new validate();
$valid->name('csrf')->csrf('');
if(!$valid->control()){
alert('Ошибка сохранения', 'danger');
redirect(referal_url(), $valid->data(), $valid->error());
}
//
alert('Успешно', 'success');
redirect(referal_url());
}
public function delete()
{
$this->title('');
new view('name/delete', $this->data);
}
public function deleteAction()
{
$valid = new validate();
$valid->name('csrf')->csrf('');
if(!$valid->control()){
alert('Ошибка сохранения', 'danger');
redirect(referal_url(), $valid->data(), $valid->error());
}
//
alert('Успешно', 'success');
redirect(referal_url());
}
}
файлы шаблонов app/views/dir/name/index.php
app/views/dir/name/create.php
app/views/dir/name/update.php
app/views/dir/name/delete.php
и файл роутера app/route/web/00_name.php
<?php
$route->namespace('app\controllers')->group('/', function($route){
$route->get('/')->controller('nameController', 'index');
$route->get('/create')->controller('nameController', 'create');
$route->post('/create')->controller('nameController', 'createAction');
$route->get('/edit/{param_id}')->controller('nameController', 'update');
$route->post('/edit/{param_id}')->controller('nameController', 'updateAction');
$route->get('/delete/{param_id}')->controller('nameController', 'delete');
$route->post('/delete/{param_id}')->controller('nameController', 'deleteAction');
});