【问题标题】:Use non-Symfony code in Symfony project在 Symfony 项目中使用非 Symfony 代码
【发布时间】:2015-09-28 20:33:42
【问题描述】:

我有一个非 Symfony 项目,我想将它包含在 Symfony 项目中。

该项目有很多形式的相对路径,如

<form action="actions/check.php"> 
    <input type="text" name="pages">
    <input type="submit" value="Check">
</form>

或者包括像include '../include/class.php';这样的文件

完全改变它以在 Symfony 中工作会很麻烦,那么有没有办法让这些相对路径在 Symfony 项目中工作?

我已将项目包含在包内的文件夹中,但显然提交表单会将我发送到网站上不存在的相关页面,因为没有为该页面定义路由。比如上面的表格,我发到mywebsite/actions/check.php

为这些创建路由不会有太大作用,因为我需要为它们创建 Symfony 控制器,这意味着我需要重做项目,并从这些控制器的原始文件中复制/粘贴代码。

是否可以在 Symfony 项目中使用具有相对路径的非 Symfony 代码?我认为相对包含路径会起作用,但是表单操作呢?

【问题讨论】:

  • 我认为这不是一个好主意,我怀疑它会起作用。在分离的类和视图中解耦旧项目,并使用命名空间
  • 命名空间可以工作,但是表单呢?我需要编写控制器来处理它们中的每一个吗?从我的项目文件中复制和粘贴代码?
  • 在树枝视图中拆分它们并使用 symfony 表单,查看文档symfony.com/doc/current/book/forms.html
  • 我认为这个答案可能对您有所帮助:stackoverflow.com/questions/14255777/… 它谈到了静态文件,您正试图为您的 .php 提供服务。我的意思是,您的文件是否存在于/actions/check.php
  • @SparK 是的,正是我需要的。将它包含在 web/docs 中有点奇怪,但如果它完成了工作,那么我想我不应该抱怨。我知道如何制作表单以及如何将其作为 Symfony 项目重做,只是不想这样做。并且也很好奇它是如何工作的。在这个过程中发现了一些新的东西,所以一切都很好。

标签: php forms symfony


【解决方案1】:

您试图绕过路由器将脚本作为静态文件提供。 通常,框架使用静态路由来提供 CSS、JS、JPG、PNG 等服务...您的静态 .PHP 文件应该在该文件夹中。

这个答案:Rendering static content in Symfony2 project 谈论如何使用 .htaccess 文件绕过 symfony 路由器,我认为您已经在其中有条件 (RewriteCond):

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ app.php [QSA,L]
</IfModule>

它告诉我们的是:如果该文件存在于文件夹结构中,它就不会使用路由器,而是按原样提供。

【讨论】:

    猜你喜欢
    • 2014-03-30
    • 1970-01-01
    • 1970-01-01
    • 2020-10-06
    • 2019-05-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-25
    相关资源
    最近更新 更多