Yii raamwerk - hoe om dieselfde toegang reëls spesifiseer vir alle leiers van die module?

StackOverflow https://stackoverflow.com/questions/1612472

  •  06-07-2019
  •  | 
  •  

Vra

Ek geskep module vir admin spesifieke bedrywighede. Ek wil nie dieselfde toegang reëls skryf vir elke kontroleerder, dit is nie mooi kodering styl.

Was dit nuttig?

Oplossing

Een oplossing sou wees brei 'n gemeenskaplike BaseClass Controller vir elke klas gewaar.

Op hierdie manier kan jy een keer te skryf.

Ander wenke

Module is soos 'n sub-program met vervreem directory struktuur. Dit is nie verantwoordelik vir die filter of die nagaan vir toestemming.

Die enigste belangrike oplossing is om 'n nuwe onttrekking definieer as Ismael voorgestel.

class ExtendedController
{
    public function rules()
    {
        return array_merge(parent::rules(), array(
           // your rules
        ));
    }
}

Ismael en pestaa keuses is baie goed, selfs vinnig te implementeer, maar ek beveel altyd meer kragtige alternatiewe soos RBAC model. Jy kan 'n baie goeie GUI vir Yii RBAC in http://code.google.com/p/srbac/

Dit werk vir my:

class extendedController extends baseController
{
    public function accessRules()
    {
        return array_merge(

            // This controller's rules are added first:
            // Allow all users to call the 'hello' action.
            array(
                array('allow',
                    'actions'=>array('hello'), 
                    'users'=>array('*'),
                ),
            ),

            // BaseController rules are added last, especially
            // if the last rule in the baseController denies all
            // users that were not allowed yet.
            parent::accessRules()
        );
    }

    public function actionHello()
    {
        echo('Hello!');
    }
}
Gelisensieer onder: CC-BY-SA met toeskrywing
Nie verbonde aan StackOverflow
scroll top