У меня есть метод проверки того, вошел ли пользователь в мой UserController. Мне нужен тот же метод во всех остальных контроллерах. Как я могу сделать то же самое без копирования, вставляющего код для всех контроллеров.Yii 2 использовать один и тот же метод контроллера/действие в нескольких контроллерах
Метод контроллер выглядит
public function is_logged_in() {
\t $session = Yii::$app->session;
\t $cookies = Yii::$app->request->cookies;
\t //print_r($session);
\t $session->open();
\t $session_cookie_name = Yii::$app->params['cookie_name_session_var'];
\t $logged_in = false;
\t //echo "-memn-".$cook_name.' is halle - ';
\t //print_r($_SESSION);
\t if(($cook_name = $session->get($session_cookie_name))) {
\t \t //echo " - <pre>";
\t \t //print_r($cookies);
\t \t //exit;
\t \t $write_cookies = Yii::$app->response->cookies;
\t \t //echo "</pre>";
\t \t //echo $cookies->getValue($cook_name).' placenta';
\t \t if($u_token = $cookies->getValue($cook_name)) {
\t \t \t echo "b";
\t \t \t \t if($u_token) {
\t \t \t \t echo "c";
\t \t \t \t \t $write_cookies->remove($cook_name);
\t \t \t \t \t unset($write_cookies[$cook_name]);
\t \t \t \t \t $session->destroy();
\t \t \t \t \t $session->open();
\t \t \t \t \t $cookie_name = sha1($u_token).time();
\t \t \t \t \t $session[$session_cookie_name] = $cookie_name;
\t \t \t \t \t $write_cookies->add(new \yii\web\Cookie([
\t \t \t 'name' => $session[$session_cookie_name],
\t \t \t 'value' => $u_token,
\t \t \t 'expire' => time() + 6000000
\t \t ])); // around one hour expiry time
\t \t $session->close();
\t \t \t \t \t
\t \t \t \t \t
\t \t \t \t \t
\t \t \t \t \t
\t \t \t \t \t $logged_in = true;
\t \t \t \t \t //echo $u_token;
\t \t \t \t }
\t \t }
\t }
\t
\t if(!$logged_in) {
\t \t $session->destroy();
\t }
\t return $logged_in;
}
Это действительно новая информация для меня –
Посмотрите, это довольно приятно, и вы также можете расширить ее и внести свои изменения, после чего вы можете просто сказать yii использовать свой пользовательский компонент вместо стандартного. Это также интегрируется с фильтрами, которые yii имеет (например, действие, доступное только для входа в систему) –