abstract class Crud extends Module

Generic CRUD module.

Actions:

updateForm
createForm
read
update
create
delete
softDelete
restore

Action read

Request:

{
  post : {
    onlyIds : <bool - return only ids, paging not applied>,
    orderBy : <column name>,
    direction : <'asc'|'desc'>,
    page : <requested page number>,
    resultsPerPage : <number of results per page>,
    trash : <bool - query only soft deleted items>,
    search : <search string>,
    filters : {
      <column name> : {op : <operator>, val : <value>},
      <column name> : {op : <operator>, val : <value>},
      ...
    }
  }
}

Response (request.onlyIds == false):

{
  totalResults : <total number of results on all pages>,
  ids : [
    <first item id>,
    <second item id>,
    ...
  ],
  rows : [
    [<first column value>, <second column value>, ...],
    [<first column value>, <second column value>, ...],
    ...
  ],
  actions : [
    [<first item actions>],
    [<second item actions>],
    ...
  ]
}

Response (request.onlyIds == true):

[
  <first item id>,
  <second item id>,
  ...
]

Constants

ACTION_PREFIX

Action methods prefix

INFINITY

Constant. Infinite number of results requested.

ASC

Constant. Ascending order.

DESC

Constant. Descending order.

Properties

public $defaults Default crud request
protected $title override to set module's name from Module
protected $icon override to set module's icon from Module
protected $views Add views directory to module; from Module
protected $roles override to set authorized roles from Module
protected $actionRoles override to set authorized roles from Module
protected $crudColumns Columns chainset class
protected $crudActions Actions chainset class
protected $crudFilters Filters chainset class
private $crudColumnsCached Cached columns chainset
private $crudActionsCached Cached actions chainset;
private $crudFiltersCached Cached filters chainset.

Public Methods

__construct($core, $elakey)

Each module has to be initialized with eladmin instance and its own elakey.

from Module
final
core()

Return core instance

from Module
final
string
elakey()

Each module has its elakey - index in modules array - used to address requests.

from Module
final
bool
auth(string|null $action = null)

Check if user is authorized to do action, or athorized to access module at all.

from Module
string
title()

Get name of the module.

from Module
string
icon()

Get icon of the module.

from Module
final
string
requestUrl(string|null $action = null, array $args = [])

Return url for this module.

from Module
final
string
assetUrl(string $path, string|null $version = null)

Create asset url, file path relative to /assets directory. Default $version = time()

from Module
void
prepare()

Runs before any action is executed.

final
array|null
roles(string|null $action = null)

Get roles authorized to work with the module, or specific action. Empty array means any role is authorized.

from Module
final
string
render(string $template, array $args = [])

Return rendered view.

from Module
void
renderAsset(string $path)

Determinate asset content-type and render it.

from Module
bool
implementsSoftDeletes()

IMPLEMENT. Does CRUD use soft deletes?

bool
implementsSearch()

IMPLEMENT. Does CRUD support searching?

bool
implementsPaging()

IMPLEMENT. Does CRUD support paging?

bool
implementsSorting()

IMPLEMENT. Does CRUD support sorting?

bool
implementsFilters()

IMPLEMENT. Does CRUD support filtering?

abstract
string
primary()

IMPLEMENT. Name of primary key column. Default is 'id'.

final
getCrudColumns()

Get columns chainset.

final
getCrudActions()

Get actions chainset.

final
getCrudFilters()

Get filters chainset.

actionCreateForm()

ACTION. Show form - create entry.

actionUpdateForm()

ACTION. Show form - edit entry.

actionRead()

ACTION. List database entries.

actionUpdate()

ACTION. Edit database entry.

actionCreate()

ACTION. Create database entry.

actionDelete()

ACTION. Hard delete.

actionSoftDelete()

ACTION. Soft delete.

actionRestore()

ACTION. Restore.

final static
array
actions()

Return array of all defined actions.

from Module
final static
bool
hasAction(string $action)

Check if actions is defined.

from Module
final static
bool
isAction(string $action)

Check if actions is executed.

from Module
final static
string
parseAction(string $action)

We want action keys to be case insensitive. This converts action to lowercase.

from Module
final static
void
renderText(string|null $str = null)

Convinient method for plain text output. Sets HTTP header text/plain and echo $str.

from Module
final static
void
renderHtml(string|null $str = null)

Convinient method for html output. Sets HTTP header text/html and echo $str.

from Module
final static
void
renderJson(array|null $json = null)

Convinient method for json output. Sets HTTP header application/json and echo serialized $json.

from Module

Protected Methods

array
views()

Extends views directory.

Blade
blade()

Return Blade instance

from Module
abstract
void
create(array $values)

IMPLEMENT. Create item.

abstract
void
update(array $values, $id)

IMPLEMENT. Update item.

array
default()

Read default row Returns row as an associative array ['columnName' => 'value']

abstract
array
get($id)

IMPLEMENT. Read one row.

abstract
void
delete($id)

IMPLEMENT. Hard delete row.

abstract
void
softDelete($id)

IMPLEMENT. Soft delete row.

abstract
void
restore($id)

IMPLEMENT. Restore soft deleted row.

abstract
array
read(array $request, $totalResults)

IMPLEMENT. Fetch an array of rows.

crudColumns()

IMPLEMENT. Default columns chainset. Override to configure columns.

crudActions()

Default actions chainset. Override to configure actions.

crudFilters()

Default filters chainset. Override to configure filters.

id($throwIfNull = false)

Return ID of the row which should be affected by the action.

Private Methods

rowValuesArray($row)

generate array of values for one row

rowActionsArray($row)

generate array of actions for one item

void
unset(array $row)

unset columns which we shouldn't recieve before update

void
defaults(array $row)

set defaults

void
validate(array $row)

validate columns before update

void
modify(array $row)

modify values before update

Details

in Module at line 96
__construct($core, $elakey)

Each module has to be initialized with eladmin instance and its own elakey.

Parameters

$core
$elakey

in Module at line 104
final Core core()

Return core instance

Return Value

Core

in Module at line 111
final string elakey()

Each module has its elakey - index in modules array - used to address requests.

Return Value

string

in Module at line 118
final bool auth(string|null $action = null)

Check if user is authorized to do action, or athorized to access module at all.

Parameters

string|null $action

Return Value

bool

in Module at line 133
string title()

Get name of the module.

Return Value

string

in Module at line 140
string icon()

Get icon of the module.

Return Value

string

in Module at line 147
final string requestUrl(string|null $action = null, array $args = [])

Return url for this module.

Parameters

string|null $action
array $args

Return Value

string

in Module at line 160
final string assetUrl(string $path, string|null $version = null)

Create asset url, file path relative to /assets directory. Default $version = time()

Parameters

string $path
string|null $version

Return Value

string

at line 394
void prepare()

Runs before any action is executed.

Return Value

void

in Module at line 174
final array|null roles(string|null $action = null)

Get roles authorized to work with the module, or specific action. Empty array means any role is authorized.

Parameters

string|null $action

Return Value

array|null

in Module at line 195
private void setRoles(array|null $roles, string|null $action = null)

Set roles authorized to work with the module, or specific action. Empty array means any role is authorized.

Parameters

array|null $roles
string|null $action

Return Value

void

at line 294
protected array views()

Extends views directory.

Return Value

array

in Module at line 228
protected Blade blade()

Return Blade instance

Return Value

Blade

in Module at line 235
final string render(string $template, array $args = [])

Return rendered view.

Parameters

string $template
array $args

Return Value

string

in Module at line 243
void renderAsset(string $path)

Determinate asset content-type and render it.

Parameters

string $path

Return Value

void

in Module at line 250
final static array actions()

Return array of all defined actions.

Return Value

array

in Module at line 267
final static bool hasAction(string $action)

Check if actions is defined.

Parameters

string $action

Return Value

bool

in Module at line 274
final static bool isAction(string $action)

Check if actions is executed.

Parameters

string $action

Return Value

bool

in Module at line 281
final static string parseAction(string $action)

We want action keys to be case insensitive. This converts action to lowercase.

Parameters

string $action

Return Value

string

in Module at line 288
final static void renderText(string|null $str = null)

Convinient method for plain text output. Sets HTTP header text/plain and echo $str.

Parameters

string|null $str

Return Value

void

in Module at line 297
final static void renderHtml(string|null $str = null)

Convinient method for html output. Sets HTTP header text/html and echo $str.

Parameters

string|null $str

Return Value

void

in Module at line 306
final static void renderJson(array|null $json = null)

Convinient method for json output. Sets HTTP header application/json and echo serialized $json.

Parameters

array|null $json

Return Value

void

at line 128
bool implementsSoftDeletes()

IMPLEMENT. Does CRUD use soft deletes?

Return Value

bool

at line 135
bool implementsSearch()

IMPLEMENT. Does CRUD support searching?

Return Value

bool

at line 142
bool implementsPaging()

IMPLEMENT. Does CRUD support paging?

Return Value

bool

at line 149
bool implementsSorting()

IMPLEMENT. Does CRUD support sorting?

Return Value

bool

at line 156
bool implementsFilters()

IMPLEMENT. Does CRUD support filtering?

Return Value

bool

at line 163
abstract string primary()

IMPLEMENT. Name of primary key column. Default is 'id'.

Return Value

string

at line 169
abstract protected void create(array $values)

IMPLEMENT. Create item.

Parameters

array $values associative array in form ['columnName' => 'value', ...]

Return Value

void

at line 176
abstract protected void update(array $values, $id)

IMPLEMENT. Update item.

Parameters

array $values associative array in form ['columnName' => 'value', ...]
$id id of item to be updated

Return Value

void

at line 182
protected array default()

Read default row Returns row as an associative array ['columnName' => 'value']

Return Value

array

at line 193
abstract protected array get($id)

IMPLEMENT. Read one row.

Returns row as an associative array ['columnName' => 'value']

Parameters

$id

Return Value

array

at line 198
abstract protected void delete($id)

IMPLEMENT. Hard delete row.

Parameters

$id

Return Value

void

at line 203
abstract protected void softDelete($id)

IMPLEMENT. Soft delete row.

Parameters

$id

Return Value

void

at line 208
abstract protected void restore($id)

IMPLEMENT. Restore soft deleted row.

Parameters

$id

Return Value

void

at line 215
abstract protected array read(array $request, $totalResults)

IMPLEMENT. Fetch an array of rows.

Row is an associative array ['columnName' => 'value'] $totalResults needs to be set to number of results without paging applied

Parameters

array $request
$totalResults

Return Value

array

at line 220
protected crudColumns()

IMPLEMENT. Default columns chainset. Override to configure columns.

at line 230
protected crudActions()

Default actions chainset. Override to configure actions.

at line 258
protected crudFilters()

Default filters chainset. Override to configure filters.

at line 267
final Columns getCrudColumns()

Get columns chainset.

Return Value

Columns

at line 276
final Actions getCrudActions()

Get actions chainset.

Return Value

Actions

at line 285
final Filters getCrudFilters()

Get filters chainset.

Return Value

Filters

at line 302
protected id($throwIfNull = false)

Return ID of the row which should be affected by the action.

Parameters

$throwIfNull

at line 311
private rowValuesArray($row)

generate array of values for one row

Parameters

$row

at line 325
private rowActionsArray($row)

generate array of actions for one item

Parameters

$row

at line 346
private void unset(array $row)

unset columns which we shouldn't recieve before update

Parameters

array $row

Return Value

void

at line 358
private void defaults(array $row)

set defaults

Parameters

array $row

Return Value

void

at line 370
private void validate(array $row)

validate columns before update

Parameters

array $row

Return Value

void

at line 382
private void modify(array $row)

modify values before update

Parameters

array $row

Return Value

void

at line 407
actionCreateForm()

ACTION. Show form - create entry.

at line 416
actionUpdateForm()

ACTION. Show form - edit entry.

at line 425
actionRead()

ACTION. List database entries.

at line 484
actionUpdate()

ACTION. Edit database entry.

at line 495
actionCreate()

ACTION. Create database entry.

at line 507
actionDelete()

ACTION. Hard delete.

at line 515
actionSoftDelete()

ACTION. Soft delete.

at line 523
actionRestore()

ACTION. Restore.