yii2 comportamiento global para comprobar idioma en el módulo

votos
2

Tengo módulo de API en Yii2 aplicación. Antes de cualquier reuqest Tengo que comprobar qué usuarios enviar idioma en el POST o GET petición. Si el usuario no envió el lenguaje luego tirar la excepción con 422 código.

Tengo api.php módulo. Debería configurar sólo para este módulo.

Publicado el 20/10/2018 a las 10:52
fuente por usuario
En otros idiomas...                            


1 respuestas

votos
0

Crear BeforeActionValidator comportamiento, a continuación, crear método beforeAction dentro crear regla de validación con HttpException. Aquí es un ejemplo:

class BeforeActionValidator extends Behavior
{

    public $rules = [];

    public function events()
    {
        return [
            Controller::EVENT_BEFORE_ACTION => 'beforeAction'
        ];
    }


    public function beforeAction()
    {
        $lang = Yii::$app->request->get('lang', null)??Yii::$app->request->post('lang', null);
        if ($lang == null) {
            throw new HttpException(422,"lang is required");
        }
    }
}

Y a continuación, adjuntar este comportamiento a archivo de configuración. En su módulo.

public function init()
    {
        parent::init();

        \Yii::configure($this,
            [
                'as globalAccess' => [
                    'class' => BeforeActionValidator::class,
                ]
            ]);
    }

Si lo desea puede añadir otros eventos. Al igual que AFTER_REQUEST

Respondida el 20/10/2018 a las 11:16
fuente por usuario

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more