From e4829d7f78f3b9e25da122c150c96d9f70dbdbd4 Mon Sep 17 00:00:00 2001 From: dongpd Date: Thu, 23 Sep 2021 11:38:22 +0700 Subject: [PATCH] update multi language login site CR: sonhh (fake) --- controllers/DashboardController.php | 15 +++++----- controllers/SiteController.php | 12 ++++++-- messages/en/app.php | 3 +- messages/ja/app.php | 3 +- messages/vi/app.php | 3 +- models/LoginForm.php | 9 +++++- .../yiisoft/yii2-app/site/login.php | 29 +++++++++++++++++-- 7 files changed, 58 insertions(+), 16 deletions(-) diff --git a/controllers/DashboardController.php b/controllers/DashboardController.php index fcf61bfd..d0ca879d 100644 --- a/controllers/DashboardController.php +++ b/controllers/DashboardController.php @@ -14,13 +14,6 @@ use yii\helpers\Url; */ class DashboardController extends Controller { - public function init() { - parent::init(); - if (Yii::$app->user->isGuest) { - return $this->redirect(['/site/login']); - } - } - /** * {@inheritdoc} */ @@ -157,4 +150,12 @@ class DashboardController extends Controller { } } + public function actionChangeLanguageLogin($lang) { + $language = \app\models\common::allLanguage(); + foreach ($language as $key => $value) { + if ($value['name'] === $lang) + return $this->redirect(['/site/login', 'lang' => $lang]); + } + } + } diff --git a/controllers/SiteController.php b/controllers/SiteController.php index 2b91dae3..63331c1c 100644 --- a/controllers/SiteController.php +++ b/controllers/SiteController.php @@ -66,13 +66,20 @@ class SiteController extends Controller { * * @return Response|string */ - public function actionLogin() { + public function actionLogin($lang = "vi-VI") { if (!Yii::$app->user->isGuest) { return $this->goHome(); } + Yii::$app->language = $lang; $model = new LoginForm(); if ($model->load(Yii::$app->request->post()) && $model->login()) { + $lang = Yii::$app->request->post('lang'); + $language = \app\models\common::allLanguage(); + foreach ($language as $key => $value) { + if ($value['name'] === $lang) + Yii::$app->session->set("language", $value); + } return $this->redirect(["/config"]); } @@ -88,9 +95,10 @@ class SiteController extends Controller { * @return Response */ public function actionLogout() { + $lang = Yii::$app->session->get("language") ? Yii::$app->session->get("language")["name"] : Yii::$app->language; Yii::$app->user->logout(); - return $this->goHome(); + return $this->redirect(['/site/login', 'lang' => $lang]); //$this->goHome(); } /** diff --git a/messages/en/app.php b/messages/en/app.php index 0ba515a9..de3f286f 100644 --- a/messages/en/app.php +++ b/messages/en/app.php @@ -135,5 +135,6 @@ return [ "DANG_NHAP" => "Login", "MAT_KHAU" => "Password", "RESET_THIET_BI_LOI" => "Error connecting to the server. Please check your internet connection and try again.", - "THU_LAI" => "Try again" + "THU_LAI" => "Try again", + "TEN_DANG_NHAP_HOAC_MAT_KHAU_KHONG_DUNG" => "Incorrect username or password." ]; diff --git a/messages/ja/app.php b/messages/ja/app.php index 78459ee3..9b8f1c66 100644 --- a/messages/ja/app.php +++ b/messages/ja/app.php @@ -135,5 +135,6 @@ return [ "DANG_NHAP" => "ログイン", "MAT_KHAU" => "パスワード", "RESET_THIET_BI_LOI" => "サーバーへの接続中にエラーが発生しました。インターネット接続を確認して、もう一度お試しください", - "THU_LAI" => "再試行" + "THU_LAI" => "再試行", + "TEN_DANG_NHAP_HOAC_MAT_KHAU_KHONG_DUNG" => "ユーザーネームまたはパスワードが違います" ]; diff --git a/messages/vi/app.php b/messages/vi/app.php index b6b3d58d..8a5c16d2 100644 --- a/messages/vi/app.php +++ b/messages/vi/app.php @@ -135,5 +135,6 @@ return [ "DANG_NHAP" => "Đăng nhập", "MAT_KHAU" => "Mật khẩu", "RESET_THIET_BI_LOI" => "Lỗi kết nối đến server. Hãy kiểm tra lại kết nối internet và thử lại.", - "THU_LAI" => "Thử lại" + "THU_LAI" => "Thử lại", + "TEN_DANG_NHAP_HOAC_MAT_KHAU_KHONG_DUNG" => "Tên đăng nhập hoặc mật khẩu không đúng." ]; diff --git a/models/LoginForm.php b/models/LoginForm.php index 038c70a1..b8c8f48a 100644 --- a/models/LoginForm.php +++ b/models/LoginForm.php @@ -43,11 +43,18 @@ class LoginForm extends Model { if (!$this->hasErrors()) { $user = $this->getUser(); if (!$user || !$user->validatePassword($this->password)) { - $this->addError($attribute, 'Incorrect username or password.'); + $this->addError($attribute, Yii::t("app", "TEN_DANG_NHAP_HOAC_MAT_KHAU_KHONG_DUNG")); } } } + public function attributeLabels() { + return [ + 'username' => Yii::t("app", "TEN_DANG_NHAP"), + 'password' => Yii::t("app", "MAT_KHAU") + ]; + } + /** * Logs in a user using the provided username and password. * @return bool whether the user is logged in successfully diff --git a/vendor/dmstr/yii2-adminlte-asset/example-views/yiisoft/yii2-app/site/login.php b/vendor/dmstr/yii2-adminlte-asset/example-views/yiisoft/yii2-app/site/login.php index 824cd9f7..1a7b2834 100644 --- a/vendor/dmstr/yii2-adminlte-asset/example-views/yiisoft/yii2-app/site/login.php +++ b/vendor/dmstr/yii2-adminlte-asset/example-views/yiisoft/yii2-app/site/login.php @@ -7,7 +7,7 @@ use yii\bootstrap\ActiveForm; /* @var $form yii\bootstrap\ActiveForm */ /* @var $model \common\models\LoginForm */ -$this->title = 'Sign In'; +$this->title = Yii::t("app", "DANG_NHAP"); $fieldOptions1 = [ 'options' => ['class' => 'form-group has-feedback'], @@ -50,6 +50,30 @@ $fieldOptions2 = [
+ " name="lang"> + "vi.png", "name" => "vi-VI", "description" => "Tiếng Việt"]; + foreach ($languages as $key => $value) { + if ($value['name'] === Yii::$app->request->get('lang')) + $currentLanguage = $value; + } + ?> +
+ + +
'btn btn-primary btn-block', 'name' => 'login-button']) ?> @@ -60,5 +84,4 @@ $fieldOptions2 = [
- -
+