我正试图找到一种方法来整合我的网站,使用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书,我找不到我需要使用的代码。
答案 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
$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