Покинул форум
Сообщений всего: 116
Дата рег-ции: Дек. 2016
Помог: 0 раз(а)
Перехожу на ЧПУ, столкнулся с проблемой, не могу отловить причину. может кто подскажет:
Схема у меня такая: Если после index.php? был один параметр(page=...) - это страница представления без скрипта, просто статичная html страница(в качестве модуля подключался дефолтный), если два параметра(module=...&page=...), первый соответственно название модуля, второй - имя скрипта. Т.е. МОДУЛЬ+ФАЙЛ в любом случае, а файл или php или html в зависимости от того, был указан модуль в параметрах или нет.
В ядре у меня вот такие подключения:
Если в адресной строке указать только один параметр, вывод идет в браузер как положено, если два параметра(есть модуль и скрипт) - правильный модуль подгружается, правильный скрипт работает, и даже разметка есть, но не учитываются стили. Не могу понять, почему теряются..
(Добавление)
Причину нашел, но чисто интуитивно. Я не понял, почему так происходит, может кто посветит...
Файлы представления просто не видели стили, находящиеся в общей папке для всего сайта. У меня предусмотрено наличие разных скинов для сайта. Так, стили для конкретного скина(в моем случае - дефолтного) заработали после копирования стилей и изображений в папку конкретного скина(в моем случае - дефолтного)
Perun
Отправлено: 02 Марта, 2017 - 00:22:40
Гость
Покинул форум
Сообщений всего: 116
Дата рег-ции: Дек. 2016
Помог: 0 раз(а)
Опять таки очередная проблема.. :
У меня практически везде структура: МОДУЛЬ+ФАЙЛ+КЛЮЧИ-ПАРАМЕТРЫ и название файла представления совпадает с названием модуля.
Есть один модуль(app), в котором в зависимости от определенных условиы выводится три разные формы = три разных независимых файла с формами. Названия у них разные, поэтому в общий маршрутизатор они не особо вписываются. Нужно в самом маршрутизаторе прописывать относительно много условий. После многочасового мозгового штурма я сделал так: сделал один app.html файл , а в этом файле прописал минимаршрутизатор для этих трех файлов представления:
С одной стороны - работает, и основной маршрутизатор теперь выглядит просто и понятно, с другой стороны - имею html файл чисто с php кодом..
Выглядит бредово, но другое мне в голову не приходит. Может подкините идей решения вопроса?
Покинул форум
Сообщений всего: 1581
Дата рег-ции: Февр. 2014 Откуда: Украина
Помог: 74 раз(а)
Вместо множества блоков if () else {} можно собрать список страниц (модулей), и организовать поиск в этом списке с последующим подключением запрошенного в GET-параметре модуля. Пример:
Покинул форум
Сообщений всего: 116
Дата рег-ции: Дек. 2016
Помог: 0 раз(а)
Не с первого раза разобрался. А теперь появились вопросы:
Если я правильно понял. данный вариант предлагается взамен моего варианта, но все внутри того же html файла?
Меня этот меммент волновал в первую очередь - полностью код php в html файле. Насколько это корректно? Но роутер в точке входа не очень хочется обременять дополнительными исключениями, тем более ради одного модуля.
Другой момент - Может это только мне и по неопытности - обработка сложная/замысловатая(хотя может это мне так кажется, я функциями поиска в массиве и файлов не пользовался) на первый взгляд и объем кода не меньше, чем в первом варианте, в чем преимущества?
И попутно к этому же вопрос: Я несмотря на то, что почитал в разных источниках про file_exists, не понял, где конкретно будет вестись поиск? Весь сервер лопатить или только в пределах сайта и сколько времени будет занимать сам поиск?
П.С.: В 10 и 11 строках наверное расширения html должны быть указаны?
Строитель
Отправлено: 03 Марта, 2017 - 19:31:38
Участник
Покинул форум
Сообщений всего: 1581
Дата рег-ции: Февр. 2014 Откуда: Украина
Помог: 74 раз(а)
Perun пишет:
Если я правильно понял. данный вариант предлагается взамен моего варианта, но все внутри того же html файла?
Внутри пхп-файла.
Perun пишет:
Меня этот меммент волновал в первую очередь - полностью код php в html файле. Насколько это корректно?
Если я не ошибаюсь, расширение файла с пхп кодом внутри не имеет значения только в том случае, если этот файл (в вашем случае *.html) подключается в пхп файл, и если в этом (*.html) файле пхп код снабжён соответствующими открывающими/закрывающими пхп тегами.
Perun пишет:
объем кода не меньше, чем в первом варианте, в чем преимущества?
Если вам нужно сократить количество строк, то ваш массив можно записать в одну строку:
Но это противоречит стандартам. Преимущества будут очевидны, если у вас в коде будет много блоков if () else - вместо них у вас будет один массив со значениями, и функция поиска по массиву. А повторяющегося кода (быдлокод) надо избегать.
Perun пишет:
И попутно к этому же вопрос: Я несмотря на то, что почитал в разных источниках про file_exists, не понял, где конкретно будет вестись поиск? Весь сервер лопатить или только в пределах сайта и сколько времени будет занимать сам поиск?
Поиск осуществляется в той директории, которую вы укажете в вашем коде. Если передать в file_exists() только имя файла (без директории), то поиск будет произведён в той же папке, в которой находится ваш файл с кодом.
Perun
Отправлено: 03 Марта, 2017 - 21:37:45
Гость
Покинул форум
Сообщений всего: 116
Дата рег-ции: Дек. 2016
Помог: 0 раз(а)
Строитель пишет:
Внутри пхп-файла.
Тогда не получится. Это же представление. И в маршрутизаторе идет вызов именно html файлов. И все эти три файла из одного модуля - это именно представления. Просто три разные - в зависимости от состояния приложения. Поэтому я их и объединил в один html файл.
Строитель пишет:
Если я не ошибаюсь, расширение файла с пхп кодом внутри не имеет значения только в том случае, если этот файл (в вашем случае *.html) подключается в пхп файл, и если в этом (*.html) файле пхп код снабжён соответствующими открывающими/закрывающими пхп тегами.
Я не про синтаксис. Вопрос как раз в неписаных правилах..
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.