ФорумПрограммированиеПыхнуть хотите?Готовые решения → DVelum платформа профессиональной web-разработки

DVelum платформа профессиональной web-разработки

  • Nyaah

    Сообщения: 574 Репутация: N Группа: Джедаи

    Spritz 24 февраля 2013 г. 13:06, спустя 48 минут 37 секунд

    Я не понимаю, почему я на столько очевидные вещи доказываю пользователю с ником master.
    Вы просто говорите о разных вещах: мастер о объекте пейджинатора, ты о его представлении
    Work, buy, consume, die
  • master

    Сообщения: 3244 Репутация: N Группа: Джедаи

    Spritz 24 февраля 2013 г. 14: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 полезло
  • proga66

    Сообщения: 15 Репутация: N Группа: Кто попало

    Spritz 24 февраля 2013 г. 19:33, спустя 4 часа 47 минут 6 секунд

    А то что?

    будет бобо при смене типа вьюхи :)

    Ну так а какие данные ей передаются? Какую структуру возвращает $model->getPaginator() ?

    я использую Zend Paginator для этого, так что можешь глянуть что он возвращает, но предупрежу, я обрабатываю то что он выдаёт, то есть разделяю записи и метаданные самого пагинатора.

    И ещё вопрос: как в твоём случае модель решает, сколько записей должно быть на странице?

    В примере я этого не привел, но она передается в метод, как дополнительный параметр, вот вырезки из реального кода http://pastebin.com/pRSaBaKA, можно задавать как свойства для модели http://pastebin.com/jQzMSRM0

    Вьюха это шаблон?

    Вьюха это просто объект или массив с данными, шаблонизатор прикручивается отдельно. Да признаю, я не правильно выразился, вьюха не строит ссылки, строит шаблонизатор, который прикручен к вьюхе.

    Тогда бэд практис, потому что задавать и использовать переменные нужно в одном и том же месте.

    какие переменные? где использовать? поясни, не совсем понятно, что имелось в виду, и почему это плохая практика?

    то есть подразумеваешь, что GET-переменная, отвечающая за номер страницы, должна называться page, это прописано в контроллере, значит и формировать url с параметром page нужно в том же месте, в контроллере

    пример был абстрактен и упрощен, текущие примеры более детально раскрывают суть дела. Что на счет формировать ссылки, опять же нет, вот код отрисовки пагинатора(шаблонизатор нативный)
    http://pastebin.com/XTH33u0n

  • master

    Сообщения: 3244 Репутация: N Группа: Джедаи

    Spritz 24 февраля 2013 г. 20: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 полезло
  • master

    Сообщения: 3244 Репутация: N Группа: Джедаи

    Spritz 24 февраля 2013 г. 20:19, спустя 12 минут 40 секунд

    вот код отрисовки пагинатора(шаблонизатор нативный)
    http://pastebin.com/XTH33u0n

    то есть просто список ul со ссылками?
    а если мне нужно добавить ссылки "на первую страницу", "на последнюю страницу" - с этим как быть?
    Спустя 172 сек.
    Вот пагинатор с работающего проекта

    zend paginator так сумеет? я его просто никогда не юзал, не знаю )
    не всё полезно, что в swap полезло
  • proga66

    Сообщения: 15 Репутация: N Группа: Кто попало

    Spritz 24 февраля 2013 г. 20:35, спустя 15 минут 42 секунды

    zend paginator так сумеет? я его просто никогда не юзал, не знаю )

    master, не помню, я не использую такую фичу, но думаю он дает об этом информацию :)

    а если мне нужно добавить ссылки "на первую страницу", "на последнюю страницу" - с этим как быть?

    использовать другой шаблон пагинатора, с другой отрисовкой, ваш кэп :)

    master, на счет изменения названия параметра страницы, тут можно подумать, мой код и вправду уязвим к копипасту в этом месте, но я ума не приложу, зачем мне будет нужно менять параметр страницы :)


  • master

    Сообщения: 3244 Репутация: N Группа: Джедаи

    Spritz 24 февраля 2013 г. 20:42, спустя 7 минут 36 секунд

    использовать другой шаблон пагинатора, с другой отрисовкой

    я имел ввиду, даёт ли он ссылки на первую и последнюю страницы, но уже посмотрел

    я ума не приложу, зачем мне будет нужно менять параметр страницы

    параметр страницы как пример. там может быть строка поиска или любой другой параметр
    не всё полезно, что в swap полезло
  • proga66

    Сообщения: 15 Репутация: N Группа: Кто попало

    Spritz 24 февраля 2013 г. 20:46, спустя 3 минуты 51 секунду

    master, понятно.
  • master

    Сообщения: 3244 Репутация: N Группа: Джедаи

    Spritz 24 февраля 2013 г. 20:52, спустя 5 минут 34 секунды

    proga66, ты хочешь сказать, что не используешь ссылки "в начало" и "в конец" в пагинаторе? )
    не всё полезно, что в swap полезло
  • proga66

    Сообщения: 15 Репутация: N Группа: Кто попало

    Spritz 24 февраля 2013 г. 21:09, спустя 17 минут 41 секунду

    master, нет, функция не востребована.
  • master

    Сообщения: 3244 Репутация: N Группа: Джедаи

    Spritz 24 февраля 2013 г. 21:44, спустя 34 минуты 56 секунд

    о, сколько я таких сайтов поперевидал. попадаешь через поиск где-то на двухсотую страницу, а чтоб попасть на первую нужно полчаса листать. попадись мне разработчик - разбил бы клавиатуру об его тупую башку
    не всё полезно, что в swap полезло
  • proga66

    Сообщения: 15 Репутация: N Группа: Кто попало

    Spritz 24 февраля 2013 г. 22:00, спустя 15 минут 37 секунд

    master, То есть, это применительно и ко мне? Думаю на этом стоит закончить обсуждение …
  • master

    Сообщения: 3244 Репутация: N Группа: Джедаи

    Spritz 24 февраля 2013 г. 23:37, спустя 1 час 37 минут 11 секунд

    proga66, лол. нет конечно. я же не знаю, какие сайты ты сделал :)
    Спустя 123 сек.
    я хочу сказать, что делать ссылки на первую страницу всё-таки нужно
    не всё полезно, что в swap полезло

Пожалуйста, авторизуйтесь, чтобы написать комментарий!