在Symfony项目中使用非Symfony代码


Use non-Symfony code in Symfony project

我有一个非Symfony项目,我想包括在Symfony项目。

项目中有很多类似

形式的相对路径
<form action="actions/check.php"> 
    <input type="text" name="pages">
    <input type="submit" value="Check">
</form>

或包含include '../include/class.php';

之类的文件

完全改变它在Symfony中工作将是非常麻烦的,所以有没有办法使这些相对路径在Symfony项目中工作?

我已经将项目包含在一个bundle中的一个文件夹中,但很明显,提交表单会将我发送到一个网站上不存在的相对页面,因为该页面没有定义路由。例如,对于上面的表单,我被发送到mywebsite/actions/check.php

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

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

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

这个答案:在Symfony2项目中渲染静态内容讨论如何使用。htaccess文件绕过symfony路由器,我假设您已经在其中有一个条件(RewriteCond):

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

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