И снова CBreadcrumbs

Общие вопросы по использованию фреймворка. Если не знаете как что-то сделать и это про Yii, вам сюда.
Ответить
isergey
Сообщения: 83
Зарегистрирован: 2010.01.16, 21:05

И снова CBreadcrumbs

Сообщение isergey »

Друзья. Опишу ситуацию.
Допустим есть контроллер администратора, который по сути нужен для того, чтобы переходить в админские части других контрллеров.
Допустим у нас есть контроллер Post.
Далее я опишу вид breadcrumbs, который ХОТЕЛОСЬ БЫ иметь в зависимоти от того ОТКУДА я пришел.
Состояния переходов.
1. Я нахожусь на индексе админа -breadcrumbs не отображаются.
2. Перехожу на список постов - breadcrumbs (Админка->Посты->Список постов).
3. Перехожу на Посты, т.е. на уровень выше - breadcrumbs (Админка->Посты) (Ссылка на админку сохранилась).
4. Перехожу на страницу создания поста - breadcrumbs (Админка->Посты->Создать пост).

Теперь я, как пользователь, простматриваю посты:
1. Я нахожусь на индексе постов -breadcrumbs не отображаются.
2. Перехожу на создание поста - (Посты->Создать пост).

Т.е. У одного и того же представления breadcrumbs могут изменятся в зависимости от маршрута переходов.

Такая вот канитель. Может быть передавать breadcrumbs как параметр? Спасибо
Аватара пользователя
slavcodev
Сообщения: 3134
Зарегистрирован: 2009.04.02, 21:42
Откуда: Valencia
Контактная информация:

Re: И снова CBreadcrumbs

Сообщение slavcodev »

а такой вид представления не подходит?

Код: Выделить всё

if(Yii::app()->user->isAdmin)
{
  breadcrumbs=array(
     'adminHome'
  );
}
else
{
  breadcrumbs=array(
     'userHome'
  );
} 
Жду Yii 3!
isergey
Сообщения: 83
Зарегистрирован: 2010.01.16, 21:05

Re: И снова CBreadcrumbs

Сообщение isergey »

Это зависимость от пользователя. Боюсь, что она не подходит. Нужна зависимость от "предыдущего" места.
Аватара пользователя
Ryadnov
Сообщения: 456
Зарегистрирован: 2010.06.20, 00:38
Откуда: Санкт-Петербург

Re: И снова CBreadcrumbs

Сообщение Ryadnov »

Предлагаю такую реализацию, работает как вы и описали, но с зависимостью от пользователя, т.к. не понятно, как определить зависимость от места

Код: Выделить всё

$home_url = (Yii::app()->user->admin) ? CHtml::link('Админка', array('admin/index')) : false;
if(count($this->breadcrumbs)>1 OR $home_url !== false) {
$this->widget('zii.widgets.CBreadcrumbs', array(
    'links' => $this->breadcrumbs,
    'homeLink' => $home_url,
));
}
  

Попробуем строить зависимость от места, тогда вместо Yii::app()->user->admin провереям наличие куки
то при первом входе на 'post/index' breadcrumbs не отображются
при посещении 'admin/index' ставим кукис, переходим на 'post/index' breadcrumbs = Админка->Посты->Список постов
Тут лично мне не понятно, когда сбросить куку? При логауте? Тогда почему не использовать Yii::app()->user->admin?

Если отслеживать по refferer, то тоже будут косяки...
Аватара пользователя
slavcodev
Сообщения: 3134
Зарегистрирован: 2009.04.02, 21:42
Откуда: Valencia
Контактная информация:

Re: И снова CBreadcrumbs

Сообщение slavcodev »

isergey писал(а):Это зависимость от пользователя. Боюсь, что она не подходит. Нужна зависимость от "предыдущего" места.
В оригинальном компоненте такого не предусмотрено. Поэтому два выходы или каждый раз запоминать в сессию пользователя на какой странице он находится, чтоб после перехода использовать эту инфу, сделать например через setFlash() или парсить Yii::app()->request->urlReferrer.
Жду Yii 3!
isergey
Сообщения: 83
Зарегистрирован: 2010.01.16, 21:05

Re: И снова CBreadcrumbs

Сообщение isergey »

Спасибо за информацию!
Ответить