【问题标题】:How to access Symfony Components in a custom main file如何在自定义主文件中访问 Symfony 组件
【发布时间】:2017-08-14 06:44:02
【问题描述】:

我正在制作一个批处理文件,该文件将从数据库中获取一些数据并发送电子邮件。在app and web 的同一级别中创建一个文件夹Batch。现在我的问题是 - 如何在控制器之外访问数据库和其他控件。

我尝试导入 use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route; use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template; 但它给出了错误提示找不到此类文件。

我不希望它是命令/控制台应用程序。

我的目标是创建一个使用 symfony 组件和 Doctrine 的文件,它位于 bundle/controller 之外。如何在文件中导入文件?

【问题讨论】:

  • 尝试使用命令?在命令中,您可以通过容器获取教义。就像在控制器内部一样。
  • 我试过了。它给了我一个奇怪的错误 - Notice: Use of undefined constant OCI_COMMIT_ON_SUCCESS - assumed 'OCI_COMM IT_ON_SUCCESS' 但在网络中使用时它工作正常。
  • 将您的类定义为服务并注入所需的依赖项?
  • @ManojKumar 我的回答解决了你的问题吗?

标签: php symfony batch-file symfony-2.6


【解决方案1】:

首先我真的建议为此创建一个Symfony Console Command

但是如果你真的想在你的文档根目录中创建一个文件(比如test.php),你可以像这样加载一个 symfony 服务:

<?php
require __DIR__.'/app/autoload.php'; // load the autoloader

$kernel = new AppKernel('prod', false); // create a kernel instance
$kernel->loadClassCache(); // load the class cache
$kernel->boot(); // boot the kernel which will initialise the container.

$myInstance = $kernel->getContainer()->get('myservice');

$myInstance->doWhatever();

PS:在那里你应该也可以使用所有其他的 symfony 组件。

PPS:Notice: Use of undefined constant OCI_COMMIT_ON_SUCCESS - assumed 'OCI_COMM IT_ON_SUCCESS' 错误告诉您oci8 扩展程序有问题尝试重新安装/安装或再次启用它。 http://php.net/manual/en/oci8.installation.php

【讨论】:

  • 我能够解决这个问题 - 对于控制台应用程序,它使用不同的 php.ini 文件,我通过 php -i | find "Configuration file 得到它。我有多个 Xampp 实例,它指的是我没有使用的一个。
猜你喜欢
  • 2018-03-19
  • 1970-01-01
  • 1970-01-01
  • 2020-04-18
  • 2012-12-13
  • 2014-12-09
  • 1970-01-01
  • 1970-01-01
  • 2018-05-22
相关资源
最近更新 更多