【发布时间】:2015-02-25 07:30:40
【问题描述】:
我没有对parameters.yml 中的参数进行硬编码,而是尝试从数据库中加载它们。并非parameters.yml中的所有参数都需要从数据库中加载一些,例如paypal的api详细信息
在config.yml我已经导入了parameters.php
imports:
- { resource: parameters.php }
如果我像下面那样在parameters.php 中添加静态信息,它就可以正常工作
$demoName = 'First Last';
$container->setParameter('demoName', $demoName);
但是我无法从数据库表中获取信息。我想我应该创建类并使用$em = this->getDoctrine()->getManager();,它应该可以工作,但它没有,我得到了
Notice: Undefined variable: paypal_data in /opt/lampp/htdocs/services/app/config/parameters.php (which is being imported from "/opt/lampp/htdocs/services/app/config/config.yml").
这是我所做的尝试如下,但代码似乎没有进入__construct()
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Doctrine\Bundle\DoctrineBundle\Registry;
use Doctrine\ORM\Mapping as ORM;
class parameters extends Controller
{
public $paypal_data;
function __construct() {
$this->indexAction();
}
public function indexAction(){
$em = $this->getDoctrine()->getManager();
$this->paypal_data = $em->getRepository('featureBundle:paymentGateways')->findAll();
}
}
$demoName = 'First Last';
$container->setParameter('demoName', $demoName);
$container->setParameter('paypal_data', $this->paypal_data);
任何帮助将不胜感激。
【问题讨论】:
-
您是否尝试将 $paypal_data 设置为
$this-paypal_data的类范围? -
是的,我也试过了
-
也许你需要实例化参数对象?
-
这绝对行不通。控制器用于将请求转换为响应,而不是在任何需要逻辑的地方使用。解析配置时不能使用任何服务,这个阶段你还在配置容器,还不能使用。您对 PHP 中的 OO 也有一些误解。
-
好吧,我确信我并没有试图实现以前没有做过的事情。我想要做的不是在 config.yml 中硬编码 paypal 凭据,只需允许用户在管理面板中定义它们,并且用户定义的任何值都可以在 config.yml 中使用它们