你能给我一些关于如何创建一个新的Symfony2项目的信息吗?
我开始从github获取symfony/symfony-sandbox作为tar-ball.然后我删除了旧的src/vendor内容.
我使用git子模块获得最新的供应商库.(fabpot/Symfony,学说,迁移,......).
问题是与最新的fabpot/Symfony代码相比,沙箱似乎已过时.
所以我开始修改改变的内容(FoundationBundle重命名,一些方法签名更改(如registerContainerConfiguration,...).
我仍然收到此错误:
Symfony\Components\HttpKernel\Exception\NotFoundHttpException: Unable to find the controller.
Run Code Online (Sandbox Code Playgroud)
这似乎是路由问题:请求不匹配任何控制器.
你有什么主意吗 ?
更好的是,是否有人使用最新Symfony代码的沙箱?
弗洛里安,提前谢谢.
主要问题是 Symfony 变化太快,无法维护基于主干/主分支的工作解决方案。
也许我没有最好的开始方法,但经过一番搜索后,我找到了一个解决方案:
我终于找到了我的问题:
我所有的问题都与 DI 有关。
第一个问题是 ControllerLoaderListener 没有观察到“core.load_controller”事件。
这是因为我在 config.yml 中停用了 Web 扩展(真丢脸……但我正在测试!)
之后,我的“路由器”服务又遇到了问题。也没有加载!
通过查看这里:
src/vendor/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/skeleton/application/yml/config/config.yml
Run Code Online (Sandbox Code Playgroud)
我发现路由器服务是通过这个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: ~
Run Code Online (Sandbox Code Playgroud)
如果我对你们说这些,只是因为我希望减少其他人的麻烦:)
如果有人感兴趣,这里有一个可与最新 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');
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1446 次 |
最近记录: |