обработка запросов: ответы | полное руководство по yii 2.0 | yii php framework

How to change access controller redirect/login url in yii2?

I have two login systems in my Yii2 application. First is default login system using User table, and second uses sms_account table. In custom controller I’ve created action for login, actionLogin(). I’ve added access control for my custom controller, but I’m having problem that when a person is not logged in, it redirects to site/login. I want to change redirect to custom-controller/login URL in Yii2 access control. My code is:

public function behaviors()
{
    return [
        'verbs' => [
            'class' => VerbFilter::className(),
            'actions' => [
                'delete' => ['post'],
            ],
        ],
        'access' => [
            'class'  => AccessControl::className(),
            'rules' =>  [
                [
                    'actions' => ['login'],
                    'allow' => false,
                    'roles' => ['@']
                ],
                [
                    'actions' => ['home'],
                    'allow' => true,
                    'roles' => ['@']
                ]
            ]
        ]
    ];
}

Can anyone tell me how to change access control URL?

Отправка ответа ¶

Содержимое ответа не отправляется пользователю до вызова метода yiiwebResponse::send(). По умолчанию он вызывается
автоматически в конце метода yiibaseApplication::run(). Однако чтобы ответ был отправлен немедленно, вы можете
вызвать этот метод явно.

Для отправки ответа метод yiiwebResponse::send() выполняет следующие шаги:

Тело ответа ¶

Большинство ответов должны иметь тело, содержащее то, что вы хотите показать пользователям.

Если у вас уже имеется отформатированная строка для тела, вы можете присвоить её свойству yiiwebResponse::$content
объекта запроса:

Yii::$app->response->content = 'hello world!';

Если ваши данные перед отправкой конечным пользователям нужно привести к определённому формату, вам следует установить значения
двух свойств: format и data. Свойство format
определяет, в каком формате следует возвращать данные из data. Например:

$response = Yii::$app->response;
$response->format = yiiwebResponse::FORMAT_JSON;
$response->data = ['message' => 'hello world'];

Yii из коробки имеет поддержку следующих форматов, каждый из которых реализован классом форматтера.
Вы можете настроить эти форматтеры или добавить новые через свойство yiiwebResponse::$formatters.

Похожее:  Межрайонная ИФНС России № 11 по Ростовской области | ФНС России | 61 Ростовская область

Хотя тело запроса может быть явно установлено показанным выше способом, в большинстве случаев вы можете задавать его неявно
через возвращаемое значение методов действий. Типичный пример использования:

publicfunctionactionIndex(){
    return$this->render('index');
}

Действие index в коде выше возвращает результат рендеринга представления index. Возвращаемое значение будет взято
компонентом response, отформатировано и затем отправлено пользователям.

Так как по умолчанию форматом ответа является HTML, в методе действия следует
вернуть строку. Если вы хотите использовать другой формат ответа, необходимо настроить его перед отправкой данных:

publicfunctionactionInfo(){
    Yii::$app->response->format = yiiwebResponse::FORMAT_JSON;
    return [
        'message' => 'hello world',
        'code' => 100,
    ];
}

Как уже было сказано, кроме использования стандартного компонента приложения response вы также можете создавать свои
объекты ответа и отправлять их конечным пользователям. Вы можете сделать это, возвращая такой объект в методе действия:

publicfunctionactionInfo(){
    return Yii::createObject([
        'class' => 'yiiwebResponse',
        'format' => yiiwebResponse::FORMAT_JSON,
        'data' => [
            'message' => 'hello world',
            'code' => 100,
        ],
    ]);
}

Примечание: создавая собственные объекты ответов, вы не сможете воспользоваться конфигурацией компонента response,
настроенной вами в конфигурации приложения. Тем не менее, вы можете воспользоваться
внедрением зависимости, чтобы применить общую конфигурацию к вашим новым объектам ответа.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *