2014-02-12 2 views
0

Окружающая среда: PHP/5.5.6Как скрыть/удалить параметры из боковой панели навигации в зависимости от роли пользователя? (лучшая практика)

У меня есть 2 * .html-файлы для боковых навигационных баров, определенных для роли A и для роли B. Есть аналогия между двумя, и я бы вроде как объединить сходства в один файл, и включают в себя различные варианты, основанные на роли, когда пользователь входит в

т.е..

  • Side Nav Bar имеет 5 вариантов. Вариант 1 Вариант 5. к
  • Роль А имеет доступ к варианту 1 - Вариант 4.
  • Роль В имеет доступ к варианту 1 - Вариант 3 и Вариант 5.

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

  1. Я рассмотрел все варианты размещения в одном файле и с помощью CSS дисплей: блок или: не имеет вместе с JavaScript/JQuery для отображения необходимые функции для пользователя. Я не знаю, является ли это лучшим подход . Даже если элементы не видны, html к этим параметрам отображается, если просмотреть исходный код.

  2. Я также рассматривал TinyButStrong для добавления элементов для списка на основе роли пользователя , и элемент будет содержаться в его собственном файле. I Я не уверен, как этот подход будет работать, потому что я ищу слияние (добавление) отдельного элемента в навигационном меню стороны. В настоящее время я , используя TBS, чтобы включить целые divs, а не отдельные элементы, как подробно описано .

т.е. боковой нав вариант HTML-файл содержит

<li><a href="/page5">Option 5</a></li> <!-- another file would have option 4 --> 

базовая сторона нав * HTML

<ul> 
    <li><a href="/page1">Option 1</a></li> 
    <li><a href="/page2">Option 2</a></li> 
    <li><a href="/page3">Option 3</a></li> 
    <!-- insert Option 5 or Option 4 here --> 
</ul> 

Какой подход лучше или есть другой способ, в котором я должен подойти к этому? Если подход, описанный выше, не является хорошим, почему?

Надеюсь, что кто-то может помочь и/или вести меня в этот момент времени.

+0

вы видели «магнит» [на руководство] (http://www.tinybutstrong.com/manual.php # html_field_prm) (прокрутка вниз), он говорит: «Магнитный тэг сохраняется, как и когда поле имеет значение, и удаляется, когда поле имеет нулевую или пустую строку». –

+0

Как вы в настоящее время включаете div в шаблон с использованием параметра «файл»? У вас есть шаблон, загруженный из файла? – Skrol29

ответ

1

Переместите содержимое * .html-файлов в один файл * .php, а затем исключите/включите пункты меню в этом файле, используя роли, выделенные с помощью php.

Например:

<?php 
    if (roles->getUserRole(reports)) { echo "<li><a href='/page5'>Reports</a></li>"; } 
?> 

Конечно, вы бы использовать структуру меню HTML и разрешений класс и т.д., выше всего лишь пример ....

+0

Мне это нравится, потому что это похоже на то, что я хочу. Я сомневаюсь, потому что в этом проекте нет примеров php, смешанных с html. В настоящее время TBS используется для объединения меню, непосредственно указывая * .html. Может ли это быть сделано таким же образом, непосредственно указав путь к файлу php? – mcv

+0

У меня нет опыта работы с TinyButStrong, но я бы предположил, что вы можете загрузить файл .php так же легко, как html-файл. Если вы используете механизм шаблонов (я пропустил это при чтении сообщения), вы можете полностью создать структуру HTML-кода внутри вызывающего PHP-файла, а затем передать его в файл HTML, отображаемый с использованием любых TBS, используемых в качестве переменных шаблона. .. – superphonic

+0

Ну, это сработало, но по какой-то причине конец моего эха был удален, что привело к тому, что конечный «}?> Также отображался рядом с пунктом меню. Возможно, из-за функции javascript, которая href вызывал определенную внутри ссылки. Изменение показало мне, что это потребует капитального ремонта на сайте, и поэтому, пока у меня не будет времени посмотреть на все это, я буду. Я надеялся, что это будет очень проще, но я оценил количество мест, на которые это ссылается при построении. – mcv

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