Symfony2 - приложение для маршрутизации php от производителя

Я хотел бы направить 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

Или как это возможно сделать?

3 ответа

Решение

Это не возможно через 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 в вашем браузере и все готово.

Это действительно легко.

Создайте обычный маршрут, затем включите 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}

Я решил что-то подобное через шаблон, но у меня есть чешская версия, только один файл:

//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 Теперь адрес - ваш сайт / администратор

Другие вопросы по тегам