Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: Урок №19 - Немного о паттернах [4]
Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007 Откуда: Berlin
Помог: 707 раз(а)
Ну вот и сделайте правило для маршрутизатора - чтобы он все site.ru/news/*/*** отправлял в действие "show" контроллера news
Или другой вариант - в случае, если не указано действие, вызывать для любого контроллера действие index. В которое для контроллера news и поместите вывод новости.
caballero
Можно много спорить вокруг того, что можно считать "динамически" - если вчитаетесь в контекст, поймете. Но, думаю, не стоит разводить этот спор.
----- Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
caballero
Отправлено: 07 Декабря, 2011 - 19:18:40
Активный участник
Покинул форум
Сообщений всего: 6001
Дата рег-ции: Сент. 2011 Откуда: Харьков
Помог: 126 раз(а)
Динамически - в реалтайме, это очевидно.
Марщруты могут быть прописаны где угодно но самый оптимальный способ - это хардкод. Потому как нет смысла в маршруте если нет соответствующего контроллера. Раз написан контроллер значит к нему пишется правило маршрутизации. По сути маппинг параметра в URL к имени контроллера и его методу.
Причем харкод в коде а не в .htaccess как это пытаются зачем то делать а потом пишут в форумы как это заставить работать.
Покинул форум
Сообщений всего: 681
Дата рег-ции: Окт. 2010 Откуда: Екатеринбург
Помог: 4 раз(а)
Все таки сколько бились, а я так и не догнал как сделать оправить запрос на дефолтовый контролер при обращении к корню сайта. Может все таки меня кто носом ткнет в правильный ответ.
EuGen
Отправлено: 07 Декабря, 2011 - 19:26:13
Профессионал
Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007 Откуда: Berlin
Помог: 707 раз(а)
caballero
Взгляните с другой стороны. Попытайтесь не быть таким категоричным, как это я замечаю везде почти, и не считать свое мнение единственно верным. Имею я ввиду вот что:
- Если маршруты прописаны в коде, это статично? Да
- Если я выношу их в БД, это статично? Нет. Динамично? Вопрос неоднозначный. Я могу в реальном времени на основании каких-то параметров (через методы, скажем) менять маршруты, и, стало быть, строить динамические вызовы? Нет. Я могу изменять их динамически через, например, панель администрирования? Да. Я могу создать какой-нибудь триггер/метод и т.п., который их будет менять в БД во время выполнения? Да. Так что ответ на вопрос вопрос крайне неоднозначен, потому я и не хочу спорить. Почему я назвал это динамическим - аргументы выше.
caballero пишет:
Причем харкод в коде а не в .htaccess
вот это не очень понял. Как раз в .htaccess здесь маршрутизация и не прописана.
----- Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
caballero
Отправлено: 07 Декабря, 2011 - 19:26:56
Активный участник
Покинул форум
Сообщений всего: 6001
Дата рег-ции: Сент. 2011 Откуда: Харьков
Помог: 126 раз(а)
Цитата:
Все таки сколько бились, а я так и не догнал как сделать оправить запрос на дефолтовый контролер при обращении к корню сайта. Может все таки меня кто носом ткнет в правильный ответ
Вообще то задача обычно состоит в том чтобы отправить на нужный контроллер. Если нужны йне обнаружен отправляем на дефолтный
Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007 Откуда: Berlin
Помог: 707 раз(а)
vlom
Например, в методе run() в случае, если не найден вызываемый контроллер - вызывать контроллер по-умолчанию вместо вызова _default_error()
----- Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
caballero
Отправлено: 07 Декабря, 2011 - 19:31:44
Активный участник
Покинул форум
Сообщений всего: 6001
Дата рег-ции: Сент. 2011 Откуда: Харьков
Помог: 126 раз(а)
EuGen
Вы можете менять маршруты как угодно но динамическими они от этого не станут. Просто потому что работать не будут или их работа не будет иметь смысла.
То есть изменение набора символов характеризующих маршрут и изменение самого маршрута как части бизнес-логики - не одно и тоже.
Покинул форум
Сообщений всего: 681
Дата рег-ции: Окт. 2010 Откуда: Екатеринбург
Помог: 4 раз(а)
Как мне кажется я изначально так и пробовал сделать подправив метод run(), сказали не правильно... Вот и бьюсь головой об стену что бы это реализовать в методе _load_defaults()
EuGen
Отправлено: 07 Декабря, 2011 - 19:35:27
Профессионал
Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007 Откуда: Berlin
Помог: 707 раз(а)
caballero пишет:
Просто потому что работать не будут
Отчего не будут? Если я буду менять их не как попало, а в соответствии с той самой бизнес-логикой через предназначенный для того метод в приложении - будут работать, и работать корректно. Речь не о наборе символов. Я думаю, Вы понимаете о чем я, и не знаю, зачем этот спор. Дальнейшее можно продолжить в отдельной теме, т.к. к этой оно относится весьма косвенно, и это продолжение того, чего я хочу избежать - спора. Мы спорим по вопросу, на который нет однозначного ответа. Пожалуйста, давайте воздержимся.
/*Вместо Default подставите название Вашего контроллера по-умолчанию (так или иначе Вам это придется сделать, т.к. в текущем виде код, естественно, неработоспособен)
А лучше сделать отдельный метод, определяющий контроллер и действие по-умолчанию и вызывающий его. Названия и того и того - опять же в конфигурационном файле хранить, к примеру.
----- Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
Panoptik
Отправлено: 07 Декабря, 2011 - 20:28:39
Постоянный участник
Покинул форум
Сообщений всего: 2493
Дата рег-ции: Нояб. 2011 Откуда: Одесса, Украина
Помог: 131 раз(а)
хорошая статья. для понятия неопытным, весьма дается нелегко, но очень наглядно и доступно. я видел 2 фреймворка, у которых общее построение было таки же и теперь мне понятно что и как реализовывается, а перерывать код фреймворка в поисках тех простых истин довольно нелегко и нет особого желания, а тут ясно обрисованы те подводные камни, которыми обычно пользуются, но на абстрактном уровне и никому не понятно как оно работает изнутри.
спасибо
----- Just do it
vlom
Отправлено: 08 Декабря, 2011 - 11:58:45
Частый посетитель
Покинул форум
Сообщений всего: 681
Дата рег-ции: Окт. 2010 Откуда: Екатеринбург
Помог: 4 раз(а)
Еще вопрос по поводу данной строки, в классе Controller_Test.
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.