Symfony2: какой репозиторий Symfony git можно использовать для запуска проекта? - PullRequest
6 голосов
/ 21 июля 2010

Не могли бы вы дать мне некоторую информацию о том, как создать новый проект Symfony2, пожалуйста?

Я начал получать symfony / symfony-sandbox от github в виде tar-шара.Затем я удалил его старый контент src / vendor.

Я получаю последние библиотеки вендоров с подмодулем git.(fabpot / Symfony, доктрина, миграции, ...).

Проблема в том, что песочница устарела по сравнению с последним кодом fabpot / Symfony.

ИтакЯ начал изменять то, что изменилось (переименование FoundationBundle, некоторые изменения подписи метода (например, registerContainerConfiguration, ...).

Я все еще получаю эту ошибку:

Symfony\Components\HttpKernel\Exception\NotFoundHttpException: Unable to find the controller.

Кажется, это проблемас маршрутизацией: запрос не соответствует ни одному контроллеру .

У вас есть идеи?

Еще лучше, у кого-нибудь есть песочница, которая работает с последним кодом Symfony?

заранее спасибо, Флориан.

1 Ответ

3 голосов
/ 22 июля 2010

Основная проблема заключается в том, что Symfony меняется слишком быстро, чтобы поддерживать работоспособное решение на основе магистральной / основной ветви.

Возможно, у меня был не лучший подход к тому, как начать, но после некоторых поисков я пришел к решению:

Я наконец нашел свою проблему:

все мои проблемы были связаны с DI.

Первая проблема заключалась в том, что ControllerLoaderListener не наблюдал событие "core.load_controller".

Это потому, что я деактивировал веб-расширение в моем config.yml (позор мне ... но я тестировал!)

После этого у меня возникла еще одна проблема со службой «роутер». Он тоже не был загружен!

Посмотрев здесь:

src/vendor/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/skeleton/application/yml/config/config.yml

Я обнаружил, что служба роутера активируется этим config.yml:

parameters:
    kernel.include_core_classes: false

kernel.config: ~

web.config: #enables the Web DI extension
  router: { resource: "%kernel.root_dir%/config/routing.yml" } #enables the Routing DI extension

web.templating: ~

doctrine.dbal: ~
doctrine.orm: ~

Если я скажу это всем вам, это просто потому, что я надеюсь сэкономить некоторые головные боли для других людей:)

А если кому-то интересно, вот работающее ядро, которое работает с последним репозиторием fabpot / Symfony.

<?php

require_once __DIR__.'/../src/autoload.php';

use Symfony\Framework\Kernel;
use Symfony\Components\Routing\Loader\YamlFileLoader as RoutingLoader;

use Symfony\Components\DependencyInjection\Loader\LoaderInterface;

class ECommerceKernel extends Kernel
{
    public function registerRootDir()
    {
        return __DIR__;
    }

    public function registerBundles()
    {
        $bundles = array(
            new Symfony\Framework\KernelBundle,
            new Symfony\Bundle\FrameworkBundle\FrameworkBundle,
            new Symfony\Bundle\SwiftmailerBundle\SwiftmailerBundle,
            new Symfony\Bundle\DoctrineBundle\DoctrineBundle,
            new Symfony\Bundle\DoctrineMigrationsBundle\DoctrineMigrationsBundle,
            new Application\ECommerceBundle\ECommerceBundle,
        );

        if ($this->isDebug()) {
        }

        return $bundles;
    }

    public function registerBundleDirs()
    {
        $bundles = array(
            'Application'        => __DIR__.'/../src/Application',
            'Bundle'             => __DIR__.'/../src/Bundle',
            'Symfony\\Framework' => __DIR__.'/../src/vendor/symfony/src/Symfony/Framework',
            'Symfony\\Bundle'    => __DIR__.'/../src/vendor/symfony/src/Symfony/Bundle',
        );

        return $bundles;
    }

    public function registerContainerConfiguration(LoaderInterface $loader)
    {
        return $loader->load(__DIR__.'/config/config_'.$this->getEnvironment().'.yml');
    }

    public function registerRoutes()
    {
        $loader = new RoutingLoader($this->getBundleDirs());

        return $loader->load(__DIR__.'/config/routing.yml');
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...