Code Igniter - Динамические меню, когда пользователь входит в систему

0

Мне нужно какое-то руководство. Я пытаюсь изменить пункт меню "logged in", где, когда пользователь успешно регистрируется в меню, динамически изменяется на "панель пользователя". Я пробовал передавать значения из моей модели auth.php, где в другом контроллере, называемом home, у меня есть это:

/проверить, что пользователь зарегистрировался или нет $this-> Auth_model-> isLoggedIn();

Я попытался применить это к моему "главному" контроллеру и сделать оператор if/else, где он имеет переменную $ menuName, которая меняет значение на основе этого, но когда я загружаю страницу, она говорит undefined $ menuName. Как мне это сделать?

class Main extends CI_Controller {
 public $menu;

function __construct()
{
    parent::__construct();
    $this->load->database();
    $this->load->library('form_validation');
    $this->lang->load('auth');
    $this->load->Model('Auth_model');

    $l = $this->Auth_model->isLoggedIn();
    if((!isset($l))||($l==FALSE)){
        $menu = "logged";
    }
    else{
        $menu = "Log-in";
    }
}

public function index() {
    $this->load->helper(array('form'));
    $dataTitle['title'] ="The University Digest";
    $this->load->view('header', $dataTitle,$menu);
    $this->load->view('body_index');
    $this->load->view('footer');

}}

    class Auth_model extends CI_Model {


public function login($name, $password){
$password = sha1($password);
    $this->db->where('username',$name);
    $this->db->where('password',$password);
    $query = $this->db->get('user_account');
    if($query->num_rows()==1){
        foreach ($query->result() as $row){
            $data = array(
                        'username'=> $row->username,
                        'logged_in'=>TRUE
                    );
        }
        $this->session->set_userdata($data);
        return TRUE;
    }
    else{
        return FALSE;
  }    
}

public function isLoggedIn(){
        header("cache-Control: no-store, no-cache, must-revalidate");
        header("cache-Control: post-check=0, pre-check=0", false);
        header("Pragma: no-cache");
        header("Expires: Sat, 26 Jul 1997 05:00:00 GMT");
        $is_logged_in = $this->session->userdata('logged_in');

        if(!isset($is_logged_in) || $is_logged_in!==TRUE)
        {
            redirect('/');
            exit;
        }}

Ошибка: Изображение 174551

  • 1
    Пожалуйста, покажите нам код в вашем контроллере, который захватывает ваше существующее меню, и функцию, которая инкапсулирует этот вызов. Также, пожалуйста, предоставьте вид и модель ... для науки. Если серьезно, нам нужен код.
  • 0
    @ Ohgodwhy добавил!
Теги:
dynamic
undefined
codeigniter-2

1 ответ

0

При успешном входе в систему вам нужно будет установить переменную сеанса.

Поскольку существует (и должно быть) только одно представление, содержащее строку меню на вашем веб-сайте/веб-приложении, проверяя доступность этой переменной сеанса, вы можете выбрать качество ссылки на странице на странице!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню