Аутентификация, шаблоны CodeIgniter - PullRequest
1 голос
/ 24 сентября 2011

Если пользователь вошел в систему

Я хочу показать другое меню, чем если пользователь не вошел в систему.

Это лучший способ сделать это, чтобы сделать только два разных представленияи включая их в зависимости от того, вошел ли пользователь в систему или нет (проверьте контроллер)

class Page extends CI_Controller {

    protected $file = 'index';

    public function index()
    {
        if ($this->auth->logged_in()) {
            $this->file = 'logged_in';
        }

        $data['title'] = 'Hem';

        $this->load->view('templates/header', $data);
        $this->load->view('templates/menu/' . $this->file . '');
        $this->load->view('home');
        $this->load->view('templates/sidebar/' . $this->file . '');
        $this->load->view('templates/footer');       
    }
}

Это мое решение до сих пор, как его улучшить?

1 Ответ

2 голосов
/ 24 сентября 2011

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

class Page extends CI_Controller {

    public function index()
    {
        $view_data['main_content'] = 'home';
        $this->load->view('templates/default');
    }
}

и это по вашему мнению:

$this->load->view('templates/partials/header');

if ($this->auth->logged_in())
{
    $this->load->view('templates/partials/menu');
}
else
{
    $this->load->view('templates/partials/index');
}

$this->load->view($main_content);

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

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

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