[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Хлебные крошки
twin
Отсюда.

Это совсем просто. Нужен сервис, на вход - массив из ключ_GET => название_страницы, на выходе цепочка ссылок до текущей. Плюс отдельным методом ссылку на предыдущую страницу (вернуться).

Сложность может возникнуть при интеграции в фреймворк, но я подскажу, если что.

Стоимость 500 руб.

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

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
Ron
Цитата (twin @ 9.06.2016 - 15:56)
на выходе цепочка ссылок до текущей.

Откуда ссылки брать? Каким образом сервис узнает о вложенности страницы?

twin
Ссылки из массива, который подается на вход. А вложенность из GET. В фреймворке есть функция iniGET(), которая его выдаст, если вызвать без аргументов.

Ну вот примерно так должен выгладеть вызов:
    $bread = Abc::newService('Bread');

$links = [ 'main' => 'Форум программистов',
'index' => 'Форма поиска'
'section'
=> 'Поиск',
];


$chain = $bread->createChain($links);



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

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
Ron
Цитата (twin @ 10.06.2016 - 03:32)
А вложенность из GET.

Как это так? В каком формате? А если вложенность 30 или 40?
twin
Ну есть правила маршрутизации. Допустим

            
'docs/<paragraph>' => 'docs/index',
'docs/<paragraph>/<part>' => 'docs/section',

Если мы на странице
http://abc-framework.ru/docs/template/inside
То GET будет таким
array (
'controller' => 'docs'
'action'
=> 'section'
'paragraph'
=> 'template'
'part'
=> 'inside'

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

Тут подумать надо. Наверное лучше на вход сразу массивы с уровнями надо совать.

Вот так:

    $bread = Abc::newService('Bread');

$lavel_1 = [ 'main' => 'Главная',
'docs' => 'Документация',
'search' => 'Поиск',
];


$lavel_2 = [ 'index' => null,
'section' => null,
];


$lavel_3 = [ 'template' => 'Шаблонизаторы',
'service' => 'Сервисы',
'example' => 'Примеры',
];


$lavel_4 = [ 'inside' => 'Встроенный',
'native' => 'Нативный',
'container' => 'Контейнер',
'pdo' => 'PDO'
];

$bread->set($lavel_1);
$bread->set($lavel_2);
$bread->set($lavel_3);
$bread->set($lavel_4);

$chain = $bread->createChain();

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

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

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.