代码之家  ›  专栏  ›  技术社区  ›  Pierre

如何将symfony网站与whmcs集成

  •  0
  • Pierre  · 技术社区  · 16 年前

    我正试图找到一种方法来整合我的网站,使用symfony和我的计费系统进行编码, WHMCS .

    我尝试的第一件事是创建一个名为whmcs的新symfony模块,在该模块中,我使用ob-start/require-once/ob-get-the-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。这些设置保存在my view.yml文件中,而部分文件不加载该文件。

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

    这可能有点愚蠢,但我一直在浏览维基、论坛和我的symfony书,我只是找不到我需要使用的代码。

    2 回复  |  直到 13 年前
        1
  •  1
  •   richsage    16 年前

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

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

    这将使指定模块的输出和操作 $output 见 http://www.symfony-project.org/api/1_2/sfController#method_getpresentationfor 详情

        2
  •  3
  •   Gijs    13 年前

    试着使用卷曲

    $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请求 $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 )这将只加载操作的内容部分(不包括样式表和javascript)