Creare nuovo Action
esempio di nuovo action utilizzato nel pannello article del modulo blog
<?php
namespace Modules\Blog\Models\Panels\Actions;
//-------- services --------
use Modules\Xot\Models\Panels\Actions\XotBasePanelAction;
use Modules\Theme\Services\ThemeService;
//-------- bases -----------
class ChangePosAction extends XotBasePanelAction {
//public $onContainer = false;
public $onItem = true; //onlyContainer
//mettere freccette su e giù
public $icon = '';
//-- Perform the action on the given models.
public function handle() {
//ddd($this->row);
$this->panel->view();
}
// funzione eventualmente richiamata (non è detto che debba essere usata in quanto fanno quasi tutto i crudjob)
// dopo il submit di un form
public function postHandle() {
//dddx(request()->all());
$data = request()->all();
dddx($data);
// codice utile
\Session::flash('message', 'This is a message!');
return $this->handle();
}
}
postHandle è la funzione richiamata da un eventuale form
{!! Form::bsOpenPanel($_panel) !!}
// vari altri tag input
{{ Form::bsSubmit('Salva') }}
{!! Form::close() !!}
esistente nella view rilasciata dalla funzione handle.
...a che servono?
//public $onContainer = false;
public $onItem = true; //onlyContainer
//mettere freccette su e giù
public $icon = '';
servono per indicare se quell'action viene utilizzato come item o container. Può essere utilizzato anche per entrambi.
Collegare al pannello
si collegano ai panel tramite il metodo actions(), inserendoli nell'array e mettendoli a disposizione del pannello
public function actions() {
return [
new Actions\RateIt(),
new Actions\ChangePosAction(),
];
}
Permessi
ogni azione può essere regolata dalla corrispettiva policy, esempio:
<?php
namespace Modules\Blog\Models\Policies;
use Modules\Xot\Models\Policies\XotBasePolicy;
class ArticlePolicy extends XotBasePolicy {
public function rate($user,$post){
return true;
}
public function changePos($user,$post){
return true;
}
}
Article Policy gestisce i permessi relativi alle action rate e changePos