Silex或其他微框架中的Proceedural Code


Proceedural Code in Silex or maybe other Microframeworks

我正在使用我编写的一个应用程序,一个表单,并用Silex重写它。由于各种原因,它被写成:

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

其中pageX.php是一个HTML表单,几乎没有php代码,它将数据传递给流程脚本。流程脚本将数据存储到Form对象中,并在会话中序列化该对象。

目前,我有pageX.php页面作为TWIG模板文件,它们可以工作,但我不知道如何合并过程过程脚本的逻辑。

我确信我没有把实际的逻辑复制到控制器上。

如果我遵循您的要求,您只需要两次相同的路线:一次用于get(显示表单),另一次用于post来处理它。在post控制器中,您只需包含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();
});

从现在起,如果您想要/发现它足够,您可以开始以更OOP/Silex的方式重构pageX_process.php页面,但您已经从这个应用程序体系结构开始了。

注意:

  • 您应该将php文件从web目录中移出(例如项目根目录中的legacy/)
  • 您必须将表单处理脚本(action参数)指向新路由(您也可以使用旧路由使其工作,但需要付出更多的努力)