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 :: Передать переменную в скрипт
Покинул форум
Сообщений всего: 81
Дата рег-ции: Июль 2010 Откуда: Мурманск
Помог: 0 раз(а)
Всем привет. Проблемка возникла. Есть главная страница, в которую рекурятся шаблоны (хедер, контент и футер). В хедере надо указать название страницы. Названия страниц создаются в своих файлах. Т.е например в главной странице есть обработчик и он проверяет какая страница была запрошена и рекурит соответствующий обработчик. И внутри этого обработчика указано название страницы. Надо как то это название передать как бы вверх скрипта, т.е сначала на главной странице реурится хедер, где надо вывести это название, а само название уже рекурится позже и получается что в то время когда рекурится хедер, переменной с названием страницы ещё нет, она создаётся позже. Сможет кто помочь? Можно конечно указать перед рекуром хедера все названия страниц (страницы берутся не из базы, т.е я знаю их количество) и в условии написать что то типа if($page== 1) {$title= 'Главная';} if($page== 2) {$title= 'Не главная';}. У меня примерно такие условия и прописаны в коде главной страницы, но там в зависимости от выбранной страницы рекурятся соответствующие контроллеры. Получится что у меня одно и тоже условие будет написано 2 раза, это уже "костыли" по моему. А если спустить рекур хедера после этого условия (когда уже $title определена), то конечно вся страница разъезжается.
----- Написать код не проблема. Написать правильный код- это наука.
OrmaJever
Отправлено: 13 Апреля, 2011 - 23:21:34
Активный участник
Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010 Откуда: Чернигов
Помог: 299 раз(а)
В таких случаях все ращёты должы быть выше html кода, а затем переменые ставятся в html.
----- Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
DeepVarvar
Отправлено: 13 Апреля, 2011 - 23:30:46
Активный участник
Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008 Откуда: Альфа Центавра
Помог: 353 раз(а)
Чтобы не было таких проблем, пора бы уже логику от хтмл отделять.
Например сделать можно так:
Файлы в корне (index.php, news.php, contacts.php и т.д.)
В нем (в каждом из них) обьявлена константа (её значение = имя файла)
для файла news.php:
Как видите без всяких if ... else все одной строчкой.
после того как отработает модуль страницы (сделает выборку из БД, соберет массивы объявит титлы кейвордс дескрипшн и пр..)
Закрываем коннект с базой.
Отправляем заголовки (экспириенс, нокеш, контенттайп, кодировка)
Далее require_once("templates/page.php");
В этой page.php (упрощаю до минимума):
Покинул форум
Сообщений всего: 81
Дата рег-ции: Июль 2010 Откуда: Мурманск
Помог: 0 раз(а)
что то я из этих кусков ода не понял что к чему. У меня вроде и так логика отделена. У меня есть контроллеры, есть модели и есть шаблоны. Просто главный шаблон рекурится ещё ДО того как определяется запрошенная страница и рекурится её котроллер, модель и шаблон. Поэтому даже если я создаю константу в каком либо контроллере, потом запрашиваю эту страницу, вылетает нотайс, что константа ещё не объявлена. Ведь прежде, чем написать require_once для подключаемого файла, нужно узнать какой именно файл был запрошен. Для этого у меня и сделаны if-else. Возможно я что то не совсем правильно сделал. У меня один шаблон с хедером для всех страниц, он реурится в самом начале главной страницы (главного контроллера), а все остальные подключаемые шаблоны просто встраиваются в этот шаблон с хедером, в div контент. Даже если изменю эти шаблоны, сделаю для каждого шаблона свой (одинаковый) хедер, хотя это по моему идиотизм , то всё равно мне же надо знать какая страница была запрошена, какой контроллер мне подключать. Опять же без if-else никак по моему. Можете разъяснить?
----- Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
Евгений 777
Отправлено: 14 Апреля, 2011 - 09:22:52
Гость
Покинул форум
Сообщений всего: 81
Дата рег-ции: Июль 2010 Откуда: Мурманск
Помог: 0 раз(а)
OrmaJever пишет:
html код не куда не денется.
У меня для вывода опеределённой страницы есть контроллер, модель и шаблон. Модель и шаблон рекурятся в контроллер. В главной же странице как бы главный контроллер, который смотрит какая страница была запрошена и исходя из этого запускает тот или иной контроллер, тот в свою очередь запускает свою модель и шаблон. Поэтому, если подключать какой либо контроллер ещё ДО html разметки в главной странице, то сначала запустится контроллер и выведет шаблон, а только потом появится каркас сайта. Фигня получается. С этим я думаю разберусь. А вот по поводу того, что писали выше
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.