php – 如何在Symfony3中的app控制器中运行bundle命令?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了php – 如何在Symfony3中的app控制器中运行bundle命令?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2972字,纯文字阅读大概需要5分钟。
内容图文
![php – 如何在Symfony3中的app控制器中运行bundle命令?](/upload/InfoBanner/zyjiaocheng/750/a127dfbf74804764b243c22f6cedc0be.jpg)
介绍
在我使用的个人项目中:
> Symfony v3.2.7
> PHP v7.1.1
> CravlerMaxMindGeoIpBundle
> How to Call a Command from a Controller
>在Windows 10 Pro开发机器上
目标
我想成功运行CravlerMaxMindGeoIpBundle的命令php bin / console cravler:maxmind:geoip-update from controller.
问题
目前我已经设置了CravlerMaxMindGeoIpBundle包和命令php bin / console cravler:maxmind:geoip-update在命令行中运行正常.
然后我按照官方文档(介绍部分的第4个链接).当然改变了可调用的命令.然而我收到了一个错误.
[Symfony\Component\Console\Exception\CommandNotFoundException]
There are no commands defined in the "cravler:maxmind" namespace.
题
如何在没有错误的情况下运行命令该怎么办?
码
我在控制器中的动作
public function geoIpUpdateAction(Request $request)
{
$kernel = $this->get('kernel');
$application = new Application($kernel);
$application->setAutoExit(false);
$input = new ArrayInput(array(
'command' => 'cravler:maxmind:geoip-update'
));
// You can use NullOutput() if you don't need the output
$output = new BufferedOutput();
$application->run($input, $output);
// return the output, don't use if you used NullOutput()
$content = $output->fetch();
// return new Response(""), if you used NullOutput()
dump($content);
return $this->render('admin/geo_ip.html.twig');
}
我的AppKernel启用了捆绑包
<?php
use Symfony\Component\HttpKernel\Kernel;
use Symfony\Component\Config\Loader\LoaderInterface;
class AppKernel extends Kernel
{
public function registerBundles()
{
$bundles = [
new Symfony\Bundle\FrameworkBundle\FrameworkBundle(),
new Symfony\Bundle\SecurityBundle\SecurityBundle(),
new Symfony\Bundle\TwigBundle\TwigBundle(),
new Symfony\Bundle\MonologBundle\MonologBundle(),
new Symfony\Bundle\SwiftmailerBundle\SwiftmailerBundle(),
new Doctrine\Bundle\DoctrineBundle\DoctrineBundle(),
new Sensio\Bundle\FrameworkExtraBundle\SensioFrameworkExtraBundle(),
new AppBundle\AppBundle(),
new Bmatzner\FoundationBundle\BmatznerFoundationBundle(),
new Knp\Bundle\TimeBundle\KnpTimeBundle(),
new FOS\UserBundle\FOSUserBundle(),
new Cravler\MaxMindGeoIpBundle\CravlerMaxMindGeoIpBundle(),
];
if (in_array($this->getEnvironment(), ['dev', 'test'], true)) {
$bundles[] = new Symfony\Bundle\DebugBundle\DebugBundle();
$bundles[] = new Symfony\Bundle\WebProfilerBundle\WebProfilerBundle();
$bundles[] = new Sensio\Bundle\DistributionBundle\SensioDistributionBundle();
$bundles[] = new Sensio\Bundle\GeneratorBundle\SensioGeneratorBundle();
}
return $bundles;
}
public function getRootDir()
{
return __DIR__;
}
public function getCacheDir()
{
return dirname(__DIR__).'/var/cache/'.$this->getEnvironment();
}
public function getLogDir()
{
return dirname(__DIR__).'/var/logs';
}
public function registerContainerConfiguration(LoaderInterface $loader)
{
$loader->load($this->getRootDir().'/config/config_'.$this->getEnvironment().'.yml');
}
}
最后
我错过了什么?
解决方法:
导入是一个常见的错误:
use Symfony\Component\Console\Application;
代替:
use Symfony\Bundle\FrameworkBundle\Console\Application;
因此,请确保导入第二个类(来自FrameworkBundle)以正确加载所有已配置的命令(外部或非外部).
内容总结
以上是互联网集市为您收集整理的php – 如何在Symfony3中的app控制器中运行bundle命令?全部内容,希望文章能够帮你解决php – 如何在Symfony3中的app控制器中运行bundle命令?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。