如何将symfony网站与whmcs集成

时间:2010-02-26 21:51:34

标签: php symfony1 whmcs

我正试图找到一种方法来整合我的网站,使用Symfony编码我的结算系统WHMCS

我尝试的第一件事是创建一个名为whmcs的新symfony模块,在该模块中,我使用ob_start / require_once / ob_get_contents来检索页面,但它仍然导致一个空白页面,日志中没有任何错误或任何地方其他。因为无论如何这都是导航的噩梦,我放弃了这个想法。

我的第二个想法是利用WHMCS hooks system。到目前为止,它除了一件事之外还有效。我不知道如何调用我的layout.php文件。这是我目前的代码:

function getSymfonyLayout()
{
    require_once($_SERVER['DOCUMENT_ROOT'].'/../config/ProjectConfiguration.class.php');
    $configuration = ProjectConfiguration::getApplicationConfiguration('frontend', 'prod', true);
    $context = sfContext::createInstance($configuration);
    $context->getRequest()->setRelativeUrlRoot('');
    $context->getInstance()->getConfiguration()->loadHelpers('Partial');
    echo get_partial("global/header");
}

add_hook("ClientAreaPage",1,"getSymfonyLayout");

我的问题是,虽然标题确实加载,但没有meta,没有css,没有javascript。这些设置保存在我的view.yml文件中,而partials不加载该文件。

我需要找到一种方法来执行echo get_layout("layout");echo get_methodaction("whmcs", "index");

之类的操作

这可能是愚蠢的,但我一直在通过维基,论坛和我的symfony书,我找不到我需要使用的代码。

2 个答案:

答案 0 :(得分:3)

尝试使用curl

$url = 'your symfony url';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $query_string);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
$data = curl_exec($ch);
echo $data;

上面的代码向网址$url

发送了一个curl请求

$query_string是您要在必要时发布到网页的数据

$query_string = "";
foreach ($postfields AS $k => $v)
    $query_string .= "$k=" . urlencode($v) . "&";

$query_string = trim($query_string, '&');

其中$postfields是要发送的参数数组 此外,您可以发送跨域ajax请求(如果您使用jQuery,只需将$.ajax选项dataType设置为jsonp),这只会加载操作的内容部分(样式表和javascripts不包括在内)

答案 1 :(得分:1)

在您的操作方法中,使用:

$output = $this->getController()->getPresentationFor("module", "action");

这会将指定模块和操作的输出呈现为$output;有关详细信息,请参阅http://www.symfony-project.org/api/1_2/sfController#method_getpresentationfor