создание динамического шаблона codeigniter - PullRequest
0 голосов
/ 02 марта 2012

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

У меня есть эти части в моем шаблоне:

  1. заголовок
  2. нав
  3. сноска
  4. и контент, который будет добавлен в текущий контроллер

Я хочу сделать это на каждом контроллере:

$this->load->view('templates/header');
$this->load->view('templates/nav');
$this->load->view('related_view');
$this->load->view('templates/footer');

но моя навигация должна содержать форму входа, которая не будет отправлена ​​на другую страницу при отправке.

Ответы [ 3 ]

0 голосов
/ 02 марта 2012

используйте сеанс для проверки зарегистрированного пользователя и поместите его в представление навигации, но сначала убедитесь, что сеанс загружен из auload или из вашего контроллера

if($this->session->userdata('user_loged')){
      //code to put some navigation when use is loged
}else{
    //code to put login form
}
0 голосов
/ 16 ноября 2012

Решение, которое я нашел, заключается в расширении класса Controller. Так что в этом случае мы должны создать расширенный контроллер (например, MY_Controller) и поместить в него динамическое действие (здесь аутентификация) как метод.

Затем мы должны расширить этот самодельный контроллер в каждом из наших контроллеров, чтобы аутентификация в шаблоне была просто обработана.

0 голосов
/ 02 марта 2012

Я обычно делаю что-то вроде этого:

<?php
$this->load->view('templates/header');

if ($this->user_model->isLoggedIn())
{
    // Logged-in users should see this view
    $this->load->view('templates/nav-registered');
}
else
{
    // Guests should see this
    $this->load->view('templates/nav-guest');
}

$this->load->view('related_view');
$this->load->view('templates/footer');

Вы будете благодарны себе, если вы переопределите класс Loader, чтобы автоматически захватывать для вас верхний / нижний колонтитул, не кодируя это в КАЖДОМ методе контроллера. Просто мысль ..

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...