Авторизация/регистрация во всплывающем окне

Тема в разделе "Общие вопросы", создана пользователем DiMoss, 11 мар 2016.

  1. DiMoss

    DiMoss Продвинутый пользователь

    Сообщения:
    858
    Симпатии:
    236
    Доброго времени суток!

    Просматривал варианты вывода авторизации и регистрации во всплывающее окно и все модули, которые качал шибко мудрёные. Я думал оно как то всё проще делается! Ведь у нас уже есть и контроллер и шаблон - осталось вывести по клику в попап окно.

    Посмотрел как сделана кнопка корзины - в контроллере хедера прописано
    PHP:
    $data['cart'] = $this->load->controller('common/cart');
    И в итоге в шаблон выводится всего лишь echo $cart

    Такое решение мне весьма нравится! Только вот когда я пытаюсь таким же образом подключить в хедере контроллер авторизации, то сайт не прогружается (((.

    Кто то пытался таким образом вывести авторизацию и регистрацию в попап окно?
     
  2. Vlad

    Vlad Эксперт

    Сообщения:
    3.899
    Симпатии:
    939
    Потому что корзина это как бы модуль, а регистрация и авторизация это страница.
    Если посмотреть в шаблоны, то у авторизации есть и шапка и подвал, а у корзины только нужное.
     
  3. DiMoss

    DiMoss Продвинутый пользователь

    Сообщения:
    858
    Симпатии:
    236
    Однако ведь можно переделать контроллеры авторизации и регистрации под это дело?
    Я так понял там необходимо вырезать некоторый функционал из контроллера и шаблона? То есть оставить только то, что нужно, а именно поля для ввода и кнопки.
     
  4. Ален

    Ален Эксперт

    Сообщения:
    2.055
    Симпатии:
    634
    конечно. Переделать можно. Только нужно добавить отправку данных по аяксу, чтобы выполнить валидацию полей без закрытия окна.
     
    DiMoss нравится это.
  5. DiMoss

    DiMoss Продвинутый пользователь

    Сообщения:
    858
    Симпатии:
    236
    А если сделать вот так в шаблоне...

    Код:
    <form  name="login" onsubmit="return validate_input();">
      ...........
      <input type="submit" onClick="validate_input();" value="<?php echo $button_login; ?>" class="btn btn-primary" />
    </form>
    
    <script type="text/javascript">
    function validate_input() {
       valid = true;
    
      if ( document.login.email.value = "0" ) {
        error_email = "<span>Впишите email</span>";
        valid = false;
      } else {
        error_email = "" ;
      }
    
      if ( document.login.password.value = "0"  ) {
        error_password = "<span>Впишите</span>";
        valid = false;
      } else {
        error_password = "" ;
      }
    
      document.getElementById('error-mail').innerHTML = error_email;
      document.getElementById('error-pass').innerHTML = error_password;
    
      return valid;
    }
    </script>
    
    Хотя я вот дописал и подумал, что в данном случае, видимо, возникнут проблемы если данные введены, но неверные. Юзеру ничего не прилетил на этот счёт)))).

    Видимо придётся познать ajax. А этот код может кому и пригодится))))
     
    Последнее редактирование: 12 мар 2016
  6. DiMoss

    DiMoss Продвинутый пользователь

    Сообщения:
    858
    Симпатии:
    236
    В шаблоне product.tpl есть практически то, что мне нужно. Я имею ввиду ajax. Надо только переделать под свои нужды. Но мне для начала надо вывести шаблон login.tpl в попап-окно. И тогда можно дальше плясать с бубном!
     
  7. DiMoss

    DiMoss Продвинутый пользователь

    Сообщения:
    858
    Симпатии:
    236
    в контроллере login.php закоментировал следующие строчки...
    Код:
    /*$data['breadcrumbs'] = array();
    
      $data['breadcrumbs'][] = array(
        'text' => $this->language->get('text_home'),
        'href' => $this->url->link('common/home')
      );
    
      $data['breadcrumbs'][] = array(
        'text' => $this->language->get('text_account'),
        'href' => $this->url->link('account/account', '', 'SSL')
      );
    
      $data['breadcrumbs'][] = array(
        'text' => $this->language->get('text_login'),
        'href' => $this->url->link('account/login', '', 'SSL')
      );*/
    
    Код:
     /*$data['column_left'] = $this->load->controller('common/column_left');
        $data['column_right'] = $this->load->controller('common/column_right');
        $data['content_top'] = $this->load->controller('common/content_top');
        $data['content_bottom'] = $this->load->controller('common/content_bottom');
        $data['footer'] = $this->load->controller('common/footer');
        $data['header'] = $this->load->controller('common/header');*/
    
    В шаблоне login.tpl...
    Код:
    <!--<?php echo $header; ?>-->
    <!--<?php echo $content_top; ?>-->
    <!--<?php echo $content_bottom; ?-->
    <!--<?php echo $footer; ?>-->
    
    и убрал "хлебные крошки"....

    В контроллере header.php добавил переменную...
    PHP:
    $data['login_popup'] = $this->load->controller('account/login');
    Вывод в шаблон предполагается таким образом...
    PHP:
    <?php echo $login_popup?>
    Теперь надо понять как сделать так, чтобы по данному запросу выводился шаблон login.tpl

    В cart.php вижу такую функцию в конце контроллера...
    PHP:
    public function info() {
      
    $this->response->setOutput($this->index());
    }
    В login.php это не помогает. Что то я упускаю или скорей всего не понимаю))).
     
    Последнее редактирование: 15 окт 2017
  8. Ален

    Ален Эксперт

    Сообщения:
    2.055
    Симпатии:
    634
    вам нужно смотреть в сторону $this->load->view
    Специально не написал полностью, так как не знаю какая версия движка у вас. Просто в разных версия по разному рендерится..
     
    DiMoss нравится это.