le Action Last updated: 2020-12-10 11:09:57

Articolo da controllare

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