Я не понимаю, почему я на столько очевидные вещи доказываю пользователю с ником master.Вы просто говорите о разных вещах: мастер о объекте пейджинатора, ты о его представлении
Форум → Программирование → Пыхнуть хотите? → Готовые решения → DVelum платформа профессиональной web-разработки
DVelum платформа профессиональной web-разработки
Страницы: ← Предыдущая страница →
-
Фев. 24, 2013, 1:06 п.п., спустя 48 минут 37 секунд
Work, buy, consume, die -
Фев. 24, 2013, 2:46 п.п., спустя 1 час 39 минут 53 секунды
Ссылки и пагинатор, всегда должны строиться во вьюхе
Вьюха это шаблон? Тогда бэд практис, потому что задавать и использовать переменные нужно в одном и том же месте. Ты в контроллере пишешь
на самом деле конечно там будет что-то вроде
public function index($page){
$records = $model->collection($page);
return array(
'records' => $records
'paginator' => $model->getPaginator()
);
}
то есть подразумеваешь, что GET-переменная, отвечающая за номер страницы, должна называться page, это прописано в контроллере, значит и формировать url с параметром page нужно в том же месте, в контроллереВьюха должна решать, что ей надо, а что ей не надо. Как ей строить ссылки, как подключать шаблоны, все это должна решать сама вьюха, полагаясь на данные которые ей передали.
Ну так а какие данные ей передаются? Какую структуру возвращает $model->getPaginator() ?Ни в коем случае нельзя конкретизировать тип вьюхи, для которой предназначаются эти данные.
А то что?
И ещё вопрос: как в твоём случае модель решает, сколько записей должно быть на странице?не всё полезно, что в swap полезло -
Фев. 24, 2013, 7:33 п.п., спустя 4 часа 47 минут 6 секунд
А то что?
будет бобо при смене типа вьюхи :)Ну так а какие данные ей передаются? Какую структуру возвращает $model->getPaginator() ?
я использую Zend Paginator для этого, так что можешь глянуть что он возвращает, но предупрежу, я обрабатываю то что он выдаёт, то есть разделяю записи и метаданные самого пагинатора.И ещё вопрос: как в твоём случае модель решает, сколько записей должно быть на странице?
В примере я этого не привел, но она передается в метод, как дополнительный параметр, вот вырезки из реального кода http://pastebin.com/pRSaBaKA, можно задавать как свойства для модели http://pastebin.com/jQzMSRM0Вьюха это шаблон?
Вьюха это просто объект или массив с данными, шаблонизатор прикручивается отдельно. Да признаю, я не правильно выразился, вьюха не строит ссылки, строит шаблонизатор, который прикручен к вьюхе.Тогда бэд практис, потому что задавать и использовать переменные нужно в одном и том же месте.
какие переменные? где использовать? поясни, не совсем понятно, что имелось в виду, и почему это плохая практика?то есть подразумеваешь, что GET-переменная, отвечающая за номер страницы, должна называться page, это прописано в контроллере, значит и формировать url с параметром page нужно в том же месте, в контроллере
пример был абстрактен и упрощен, текущие примеры более детально раскрывают суть дела. Что на счет формировать ссылки, опять же нет, вот код отрисовки пагинатора(шаблонизатор нативный)
http://pastebin.com/XTH33u0n -
Фев. 24, 2013, 8:06 п.п., спустя 33 минуты 26 секунд
какие переменные? где использовать? поясни, не совсем понятно, что имелось в виду, и почему это плохая практика?
ключевое понятие: области видимости и изоляция переменных.
когда пишешь функцию, в ней есть локальные переменные, они существуют только внутри этой функции и изолированы в ней, это даёт удобство манипуляции этой функцией. то есть её можно переместить в коде, переименовать, переписать, и на внешнем коде это не отразится. типа глобалсы зло и всё такое
аналогично - объект. в нём есть приватные переменные, невидимые снаружи, и это даёт аналогичное удобство - как бы ты ни менял код внутри класса, какие бы приватные переменные ни использовал, можешь быть уверен, что код вне класса не затронут.
с переменными, передающимися в url и получаемыми из него - то же самое
например, метод контроллера:
function foo(){
$page_num = $_GET['page_id']; // тут мы ожидаем параметр page_id
// …
$prev_url = '/foo?page_id='.($page_num - 1); // в этом же методе определяем, что за номер страницы в url отвечает параметр page_id
$next_url = '/foo?page_id='.($page_num + 1);
return compact('prev_url', 'next_url');
}
т.е. решил я внезапно, что вместо page_id нужно использовать blabla - заменил название в методе и всё, по всему коду не рыскаюне всё полезно, что в swap полезло -
Фев. 24, 2013, 8:19 п.п., спустя 12 минут 40 секунд
вот код отрисовки пагинатора(шаблонизатор нативный)
http://pastebin.com/XTH33u0n
то есть просто список ul со ссылками?
а если мне нужно добавить ссылки "на первую страницу", "на последнюю страницу" - с этим как быть?Спустя 172 сек.Вот пагинатор с работающего проекта
zend paginator так сумеет? я его просто никогда не юзал, не знаю )не всё полезно, что в swap полезло -
Фев. 24, 2013, 8:35 п.п., спустя 15 минут 42 секунды
zend paginator так сумеет? я его просто никогда не юзал, не знаю )
master, не помню, я не использую такую фичу, но думаю он дает об этом информацию :)а если мне нужно добавить ссылки "на первую страницу", "на последнюю страницу" - с этим как быть?
использовать другой шаблон пагинатора, с другой отрисовкой, ваш кэп :)
master, на счет изменения названия параметра страницы, тут можно подумать, мой код и вправду уязвим к копипасту в этом месте, но я ума не приложу, зачем мне будет нужно менять параметр страницы :) -
Фев. 24, 2013, 8:42 п.п., спустя 7 минут 36 секунд
использовать другой шаблон пагинатора, с другой отрисовкой
я имел ввиду, даёт ли он ссылки на первую и последнюю страницы, но уже посмотреля ума не приложу, зачем мне будет нужно менять параметр страницы
параметр страницы как пример. там может быть строка поиска или любой другой параметрне всё полезно, что в swap полезло -
-
Фев. 24, 2013, 8:52 п.п., спустя 5 минут 34 секунды
proga66, ты хочешь сказать, что не используешь ссылки "в начало" и "в конец" в пагинаторе? )не всё полезно, что в swap полезло -
-
Фев. 24, 2013, 9:44 п.п., спустя 34 минуты 56 секунд
о, сколько я таких сайтов поперевидал. попадаешь через поиск где-то на двухсотую страницу, а чтоб попасть на первую нужно полчаса листать. попадись мне разработчик - разбил бы клавиатуру об его тупую башкуне всё полезно, что в swap полезло -
Фев. 24, 2013, 10 п.п., спустя 15 минут 37 секунд
master, То есть, это применительно и ко мне? Думаю на этом стоит закончить обсуждение … -
Фев. 24, 2013, 11:37 п.п., спустя 1 час 37 минут 11 секунд
proga66, лол. нет конечно. я же не знаю, какие сайты ты сделал :)Спустя 123 сек.я хочу сказать, что делать ссылки на первую страницу всё-таки нужноне всё полезно, что в swap полезло
Страницы: ← Предыдущая страница →
Пожалуйста, авторизуйтесь, чтобы написать комментарий!