Процедурный кодекс в Silex или, возможно, другие микрофреймы

0

Я беру приложение, которое я написал, форму и переписываю его в Silex. Это было по разным причинам написано так:

  • page1.php
    • page1_process.php
  • page2.php
    • page2_process.php
  • page3.php
    • page3_process.php

Где pageX.php - это HTML-форма с небольшим PHP-кодом, который передает данные сценарию процесса. Сценарий процесса хранит данные в объекте Form и сериализует объект в сеансе.

В настоящее время у меня есть страницы page.pp как файлы шаблонов TWIG, и они работают, но я не знаю, как включить логику процедурных сценариев процесса.

Я уверен, что я не копирую фактическую логику контроллеров.

Теги:
routes
frameworks
silex

1 ответ

1

Если я следую вашим требованиям, вам просто нужен один и тот же маршрут дважды: один для получения (отображение формы) и один для сообщения для его обработки. В пост-контроллере вам просто нужно включить ваш pageX_process.php, и вы должны быть готовы к работе.

Переведенный в коде Silex, это должно быть что-то вроде:

<?php
/**
 * if you're using silex-skeleton 
 * from: https://packagist.org/packages/fabpot/silex-skeleton)
 * this file should be src/controllers
 */

// standard setup, like error handling and other route declarations

$app->get('/page1', function() use ($app) {
   // you're currently using this (somehow)
  $params = []; //set up your template parameters here

  return $app['twig']->render('page1.twig', $params);
});

$app->post('/page1_proccess', function() use($app) {
  ob_start();
  require PATH_TO_LEGACY_FILES_DIR . '/page1_process.php';

  return ob_get_clean();
});

С этого момента, если вы хотите/находите его адекватным, вы можете начать рефакторинг страниц pageX_process.php более удобным способом OOP/Silex, но у вас есть начальная точка с этой архитектурой приложения.

ВНИМАНИЕ:

  • вы должны перенести свои php файлы из веб-каталога (например, наследие/в корневой каталог вашего проекта)
  • вы должны указать свой скрипт обработки формы (параметр действия) на новый маршрут (вы можете заставить его работать и с использованием старого маршрута, но требует немного больше усилий)
  • 0
    Я попробую это. Спасибо.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню