Приветствую, камрады. Подскажите, как лучше сделать. Есть небольшое приложение app.php, которое принимает несколько гет-параметров и, в соответствии с ними, выполняет необходимые действия, а также отображает эти параметры в интерфейсе. Все вроде просто, но есть нюанс. При инициализации приложения в адресной строке никаких гет-параметров нет, следовательно, их надо взять из имеющегося текстового или JSON файла, распарсить, создать гет-обработчики (?), задающие гет-параметры (без перезагрузки), подставить их значения в соответствующие поля формы, да еще вывести списки ссылок и кнопок, меняющих некоторые из этих параметров и добавляющих/удаляющих дополнительные параметры. Пример. Файл с параметрами Код (Text): type: sub0, rec: true, path: /path0, over: false type: sub2, rec: false, path: /path1, over: true type: sub9, rec: false, path: /path2, over: false Инициализация приложения. Создание неких гет-обработчиков, контролирующих гет-параметры. (значения по умолчанию берутся из первой строки файла с параметрами) Заполнение полей формы значениями по умолчанию (видимо, посредством гет-обработчиков) Type: [sub0], Rec: [true], Path: [/path0], Over: [false] (rec и over — чекбоксы, остальные текстовые) Вывод списка ссылок (собирает их, видимо, какой-то контроллер) sub0 | sub2 | sub9 Каждая ссылка должна вести на app.php с параметрами из соответствующей строки файла и при этом отслеживать параметр type, чтобы быть активной или неактивной. sub0: app.php?type=sub0&rec=true&path=/path0&over=true sub2: app.php?type=sub2&rec=false&path=/path1&over=true sub9: app.php?type=sub9&rec=false&path=/path2&over=false (При переходе по ссылке, поля формы обновляются уже в соответствии с имеющимися параметрами.) И в конце должны быть две кнопки/ссылки, одна из которых ведет как и ссылка выше на app.php, только уже не с параметрами из файла, а со значениями полей формы (потому что они могут быть изменены пользователем) и если есть гет-параметр action, то убирает его, а вторая делает то же самое, только наоборот добавляет гет-параметр action. Кнопка/ссылка [Set params] app.php?type=sub190&rec=true&path=/path8000&over=false Кнопка/ссылка [Process] app.php?type=sub190&rec=true&path=/path8000&over=false&action=process Проблема в том, что при наличии такого интерфейса приходится постоянно просеивать адресную строку, фильтровать ссылки и дублировать названия параметров в разных местах. Это, конечно, ужасно и скорее всего давно есть грамотные решения, и, возможно, не огромные фреймворки, а что-то более компактное и компонентно-ориентированное. Кто что подскажет? PS. Хотя в похожем приложении на JS предложили именно один из трех фреймворков.
нет ничего проще хранить данные в файле в формате json создайте файл Спойлер: json_default.php PHP: <?php return '[ {"type":"sub0","rec":true,"path":"\\/path0","over":false}, {"type":"sub2","rec":false,"path":"\\/path1","over":true}, {"type":"sub9","rec":false,"path":"\\/path2","over":false} ]'; и запустите такой код PHP: <?php echo '<pre>'; print_r(json_decode(include('json_default.php'), true)); echo '</pre>'; всё остальное вообще нихрена не понятно
Да, не оч. понятно. Но это похоже на роутинг при помощи таблицы с объединением отдельного «роута» с проч. данными в одной записи. Вот, например: http://g09.ru/ Список на главной расширяется автоматически, когда я добавляю соотв. запись в БД, причем, чтобы в нем не отображались все подряд устанавливаемые модули, был добавлен флаг видимости в списке, который учитывается при отображении списка. Демка базируется на этой модели данных и ее расширении, позволяющем контролировать во фронте не только параметры пути, но и разрешать/запрещать GET-параметр p, причем отдельно для одно- и двухкомпонентных путей, а также явно прописывать номер/имя обработчика. Там в комментах как раз сейчас обсуждают это расширение.
Ничего не понятно если честно... Вы роутинг пишите? В чем проблема? Не пытайтесь нас в дебри конкретного решения завести - объясните "на пальцах" что вы хотите получит в итоге, в чем сейчас проблема? Причем и код сам не показываете почемуто