PHP code example of enzoaccardo / ci4-adminkit-starter

1. Go to this page and download the library: Download enzoaccardo/ci4-adminkit-starter library. Choose the download type require.

2. Extract the ZIP file and open the index.php.

3. Add this code to the index.php.
    
        
<?php
require_once('vendor/autoload.php');

/* Start to develop here. Best regards https://php-download.com/ */

    

enzoaccardo / ci4-adminkit-starter example snippets


$filterFields = [
    'name'  => ['type' => 'text', 'label' => 'Nome',  'column' => 'u.name'],
    'email' => ['type' => 'text', 'label' => 'Email', 'column' => 'u.email'],
];

$columns = [
    'name'          => ['label' => 'Nome',           'sortable' => true, 'column' => 'u.name'],
    'email'         => ['label' => 'Email',          'sortable' => true, 'column' => 'u.email'],
    'last_login_at' => ['label' => 'Ultimo accesso', 'sortable' => true, 'column' => 'u.last_login_at'],
    'is_active'     => ['label' => 'Stato'],
    '_actions'      => ['label' => '', 'class' => 'text-end'],
];

$filters = $this->getFilters($filterFields);
$sort    = $this->getSort($columns, defaultKey: 'name', defaultDir: 'asc');
$page    = $this->getPage();
$perPage = $this->getPerPage();

$builder = $this->userModel->queryForIndex(withDeleted: true);
$this->applyFilters($builder, $filterFields, $filters);
$this->applySort($builder, $columns, $sort);

return [
    'action'    => base_url('admin/users' . ($user ? "/{$user->id}" : '')),
    'cancelUrl' => base_url('admin/users'),
    'ajax'      => true,
    'sections'  => [[
        'fields' => [
            'name'     => ['type' => 'text',  'label' => 'Nome',  '         'hint'     => $user ? 'Lascia vuoto per non cambiare.' : 'Minimo 8 caratteri.',
                'widget'   => 'pwstrength',
            ],
            'role_id'  => [
                'type'    => 'select',
                'label'   => 'Ruolo',
                'options' => $this->roleModel->getActive(),
                'empty'   => '— nessun ruolo —',
                'widget'  => 'tomselect',
            ],
            'is_active' => ['type' => 'switch', 'label' => 'Utente attivo', 'default' => 1],
        ],
    ]],
];

'tipo' => [
    'type'    => 'radio',
    'options' => ['privato' => 'Privato', 'azienda' => 'Azienda'],
    'affects' => [
        ['when' => 'azienda', 'show' => ['ragione_sociale', 'piva'], '

'citta' => [
    'type'   => 'select',
    'widget' => 'tomselect',
    'remote' => ['dependsOn' => 'provincia', 'provider' => 'citta'],
],

protected function optionsCitta(): array
{
    $prov = (string) $this->request->getGet('provincia');

    return $this->cittaPerProvincia($prov);   // [['value' => ..., 'label' => ...], ...]
}

'paziente_id' => [
    'type'      => 'select',
    'widget'    => 'tomselect',
    'options'   => $this->pazienti(),
    'createNew' => ['provider' => 'patient', 'label' => 'Crea nuovo', 'title' => 'Nuovo paziente'],
],

class Users extends AdminController
{
    public static function routes(RouteCollection $routes): void
    {
        $routes->get('users',                       'Admin\Users::index');
        $routes->get('users/create',                'Admin\Users::create');
        $routes->post('users',                      'Admin\Users::store');
        $routes->get('users/([0-9]{1,10})/edit',    'Admin\Users::edit/$1');
        $routes->post('users/([0-9]{1,10})',        'Admin\Users::update/$1');
        $routes->post('users/([0-9]{1,10})/delete', 'Admin\Users::delete/$1');
    }
}

use AdminKit\Routing\Discovery;

$routes->get('/', 'Front\Home::index', ['filter' => 'auth']);

Discovery::discover($routes, 'App\Controllers\Front\Auth');           // login, reset password
Discovery::discover($routes, 'AdminKit\Mfa\Controllers');             // flusso del secondo fattore
Discovery::discover($routes, 'App\Controllers\Api', 'publicRoutes');  // API senza token

$routes->group('api/v1', ['filter' => 'jwt'], static function ($routes) {
    Discovery::discover($routes, 'App\Controllers\Api');              // API protette
});

Discovery::adminGroup($routes, 'App\Controllers\Admin');              // pannello
bash
php spark migrate --all         # applicazione e pacchetti
php spark db:seed DatabaseSeeder

php spark serve                 # http://localhost:8080

* * * * * cd /percorso/del/progetto && php spark tasks:run >> /dev/null 2>&1