create/controller

Команда создания контроллера приложения и не только

Контроллер, самый ответственный класс приложения, именно он отвечает за формирование данных. Чаще всего именно с его создания начинается работа над сайтом. Принцип создания контроллера всегда одинаков, по  этому стоит автоматизировать этот процесс.

Команда 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');
});
Grewi 2024