コード例 #1
0
 public function actionSettings()
 {
     if (\Yii::$app->user->isGuest) {
         return $this->redirect(Url::toRoute('/'));
     }
     if (\Yii::$app->user->identity && \Yii::$app->user->identity->role != User::ROLE_ADMIN) {
         return $this->redirect(Url::toRoute('/'));
     }
     $page = Yii::$app->request->get('page', 'general');
     $_dynamicModel = $this->_dynamicModel;
     $sidemenus = ['general' => ['title' => Yii::t('app', 'Общие настройки'), 'url' => Url::toRoute(['super-admin/settings', 'page' => 'general']), 'active' => $page == 'general', 'settings' => ['site_name', 'demo_account_id', 'manager_notification_email', 'manager_notification_status-' . Photobook::STATUS_NEW, 'manager_notification_status-' . Photobook::STATUS_SENT_TO_CUSTOMER, 'manager_notification_status-' . Photobook::STATUS_WAIT_EDIT_FROM_CUSTOMER, 'manager_notification_status-' . Photobook::STATUS_SENT_TO_PRINT, 'manager_notification_status-' . Photobook::STATUS_READY_FOR_PRINT_WAIT_PAYMENT, 'manager_notification_status-' . Photobook::STATUS_READY_FOR_PRINT_PAID, 'manager_notification_status-' . Photobook::STATUS_READY_SENT_TO_PRINT, 'manager_notification_status-' . Photobook::STATUS_READY, 'manager_notification_status-' . Photobook::STATUS_READY_SENT_TO_CLIENT, 'manager_notification_status-' . Photobook::STATUS_RECEIVED_FEEDBACK, 'manager_notification_status-' . Photobook::STATUS_ARCHIVE, 'note_upload_page', 'photobook_thumb_as_object'], 'validation' => ['site_name' => [['value', 'required'], ['value', 'string', 'min' => 2, 'max' => 255]], 'manager_notification_email' => [['value', 'filter', 'filter' => 'trim'], ['value', 'email']], 'demo_account_id' => [['value', 'filter', 'filter' => 'trim'], ['value', 'app\\components\\DemoAccountIdValidator']]]], 'currency' => ['title' => Yii::t('app', 'Курсы валют'), 'url' => Url::toRoute(['super-admin/settings', 'page' => 'currency']), 'active' => $page == 'currency', 'settings' => ['currencies', 'main_currency', 'default_currency']], 'email_notification' => ['title' => Yii::t('app', 'Шаблоны Email оповещений'), 'url' => Url::toRoute(['super-admin/settings', 'page' => 'email_notification']), 'active' => $page == 'email_notification', 'settings' => ['manager_notification_change_status', 'manager_notification_new_user', 'user_notification_change_status', 'user_notification_invoice_link', 'user_notification_payment_received', 'customer_notification_link_for_comments']], 'liqpay' => ['title' => Yii::t('app', 'Настройки LiqPay'), 'url' => Url::toRoute(['super-admin/settings', 'page' => 'liqpay']), 'active' => $page == 'liqpay', 'settings' => ['liqpay_public_key', 'liqpay_private_key']]];
     $active_page = $sidemenus[$page];
     // Yii::$app->request->v
     Yii::getLogger()->log('TEST1', YII_DEBUG);
     $form = Yii::$app->request->post('SettingForm', null);
     $model = new SettingForm();
     $errors_list_data = [];
     if (!empty($form)) {
         foreach ($form as $name => $value) {
             if (!empty($active_page['validation']) && !empty($active_page['validation'][$name])) {
                 $this->_dynamicModel = DynamicModel::validateData(compact('value'), $active_page['validation'][$name]);
                 if ($this->_dynamicModel->hasErrors()) {
                     $active_page['errors'][$name] = $this->_dynamicModel->errors['value'];
                     $errors_list_data[$name] = $value;
                 } else {
                     $model->setValue($name, $value);
                 }
             } else {
                 $model->setValue($name, $value);
             }
         }
     }
     $settings = [];
     foreach ($active_page['settings'] as $key => $setting) {
         if (!isset($errors_list_data[$setting])) {
             $settings[$setting] = $model->getValue($setting, '');
         } else {
             $settings[$setting] = $errors_list_data[$setting];
         }
     }
     $this->layout = 'default';
     return $this->render($page, ['sidemenus' => $sidemenus, 'settings' => $settings, 'active_page' => $active_page]);
 }