2012-03-01 5 views
0

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

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

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

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

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

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

ответ

0

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

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

0

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

<?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 автоматически захватить ваш верхний/нижний колонтитул для вас, не имея закодировать это в КАЖДОГО метод контроллера , Просто мысль ..

+0

Мой вопрос в том, где разместить контроллер и модель входа. в отдельном классе, расширяющем ci_controller и ci_model? если да, то как включить их в текущий контроллер? вы знаете, например, это мой контроллер новостей, и я загружаю эти шаблонные представления в этот контроллер. в моей форме входа у меня есть action = "", поэтому он отправляет данные на текущую страницу. поэтому контроллер входа и модель должны быть доступны в текущем контроллере (контроллере новостей) каким-то образом для обработки проверок входа в систему. THX для ответа! – Aliweb

+0

Почему вы хотите обрабатывать логин на каждом URI? Почему бы вам не войти в систему? * Всегда * указывать на то же действие контроллера. Таким образом, вам не нужно безошибочно проверять данные для входа в систему по каждому запросу ... – landons

+0

ну, мне это очень нужно. и обратите внимание, что мой вопрос является общим и касается динамического шаблона (здесь навигация). и форма входа в систему - всего лишь пример. например, я хочу показать некоторые случайные новости в моей навигации или все, что является динамическим, а не только статическим текстом. ($ this-> load-> view() не работает). вы знаете, что динамическое действие требует контроллера и, возможно, модели. мой вопрос заключается в том, как обрабатывать эти контроллеры и модели внутри основного контроллера тока – Aliweb

0

использование сеанса для проверки loged пользователя и поставить это на взгляд нав, но сначала убедитесь, что сеанс загруженную из auload или из контроллера

if($this->session->userdata('user_loged')){ 
     //code to put some navigation when use is loged 
}else{ 
    //code to put login form 
} 
Смежные вопросы