我有一个非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>
它告诉我们的是:如果文件存在于文件夹结构中,它将不使用路由器,而是按原样使用它。