Silex中的程序代码或者可能是另一个Microframeworks

时间:2015-02-09 21:19:26

标签: php symfony frameworks routes silex

我正在写一个我写的应用程序,一个表单,并在Silex中重写它。出于各种原因,它写得像:

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

其中pageX.php是一个包含很少PHP代码的HTML表单,它将数据传递给流程脚本。进程脚本将数据存储到Form对象,并在Session中序列化对象。

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

我确定我不会将实际逻辑复制到控制器。

1 个答案:

答案 0 :(得分:1)

如果我遵循您的要求,您只需要两次相同的路线:一个用于获取(显示表单),另一个用于发布以处理它。在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目录移开(例如遗产/在项目的根目录中)
  • 您必须将表单处理脚本(操作参数)指向新路由(您可以使用旧路由使其工作,但需要更多努力)