2012-03-02 3 views
1

Я пытаюсь найти способ создания меню в Codeigniter, который отображает различные параметры на основе уровня доступа пользователя. Если это админ и редактор или обычный пользователь. Некоторые из их вариантов будут перекрываться.Меню Codeigniter на основе уровня доступа

Я рассмотрел добавление оператора if в представление, но это не очень хороший MVC. Я также рассмотрел возможность создания многомерного массива в контроллере, который устанавливает параметры меню на основе уровня доступа пользователя.

Я действительно ценю идеи и мнения.

ответ

0

Каждый из ваших учетных записей пользователей должны иметь набор ролей, т.е. панель, продажи, платежи, продукты, продукт Добавить/Редактировать, продукт Delete, отчеты и т.д. (можно использовать группы Ion Auth как роли). Затем вы создадите представление, которое отобразит меню, и вы передадите зарегистрированные роли пользователя в это представление. Затем вы просматриваете все роли и сравниваете их с пользовательскими ролями. Если у пользователя есть роль, чтобы увидеть определенную страницу, вы добавляете ссылку на эту страницу в меню.

Вот оно :-) Надеюсь, что помогло.

+1

Итак, вы бы поставили небольшую оператор if в представлении для отображения определенных меню на основе ролей пользователя? Я думаю, что это, вероятно, то, что я буду делать, но не был уверен, считалось ли это «правильным» MVC. – chegwin

+0

Да, точно. Извините, если не объяснил это правильно. И о правильном MVC ... Я не знаю, если это лучший способ сделать это, но он достаточно прост, и он будет работать :), и я собираюсь реализовать его в предстоящем проекте. Надеюсь, это поможет и вам. – Stan

0

Я всегда делаю это сложнее, чем должно быть. Почему бы не просто иметь отдельные представления (частичные) для каждого уровня пользователя? То есть:

<?php 
if ($this->user_model->isAdmin()) 
{ 
    $this->load->view('user_menu_admin'); 
} 
elseif ($this->user_model->isModerator()) 
{ 
    $this->load->view('user_menu_moderator'); 
} 
elseif ($this->user_model->isMember()) 
{ 
    $this->load->view('user_menu_member'); 
} 
else 
{ 
    $this->load->view('user_menu_guest'); 
} 
+1

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

Смежные вопросы