[英]Symfony2 - routing php app from vendor
我想从供应商处路由php脚本。 我使用Composer来安装数据库管理( https://github.com/vrana/adminer/ )。 该应用程序的来源是:vendor / vrana / adminer / adminer / index.php
我想创建路由器以使用此应用程序,例如,当我调用url myweb.com/adminer时,它应该加载该源:vendor / vrana / adminer / adminer / index.php
是否可以通过routing.yml做到这一点? 像这样:
adminer:
resource: "Vendor/vrana/adminer/adminer/index.php"
prefix: /adminer
还是怎么可能呢?
真的很简单。
创建常规路由,然后包含adminer.php并从控制器返回它。 不要忘了将此路由放在防火墙下
在控制器中:
use Symfony\Component\HttpFoundation\Response;
public function mysqlClientAction() {
return new Response(include_once $this->container->getParameter('kernel.root_dir') . '/Resources/views/adminer.php');
}
在routing.yml中
admin_mysql_manager:
path: /mysqlclient
defaults: { _controller: YourBundle\Controller\YourController::mysqlClientAction}
通过symfonys routing.yml
是不可能的,因为这需要启动app.php
的应用内核。 但是您可以将管理员设置为另一台服务器。
例如,如果您使用apache ,请写在/etc/apache2/sites-enabled/local
<VirtualHost *:80>
ServerName local.adminer
DocumentRoot /YourPathToAdminer
DirectoryIndex adminer.php
<Directory /YourPathToAdminer>
AllowOverride all
Allow from all
</Directory>
LogLevel debug
</VirtualHost>
并在您的/etc/hosts
添加某处
127.0.0.1 local.adminer
只需在浏览器中调用http://local.adminer
即可。
我通过模板解决了类似的问题,但是我使用的是捷克版本,只有一个文件:
//app/Resources/views/adminer.html.php
<?php
include(__DIR__.'/../../../vendor/vrana/adminer/adminer/index.php');
?>
和路线从控制器
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
/**
* @Route("/adminer", name="adminer")
* @Template(engine="php")
*/
public function adminerAction()
{
return $this->render('::adminers.html.php');
}
并将adminer.php并重命名为/vendor/vrana/adminer/adminer/index.php现在地址是yoursite / adminer
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.