Как интегрировать сайт Symfony с WHMC - PullRequest
0 голосов
/ 27 февраля 2010

Я пытаюсь найти способ интеграции моего сайта, закодированного с помощью Symfony, с моей биллинговой системой, WHMCS .

Первым делом я попытался создать новый модуль Symfony под названием whmcs, и в этом модуле я использовал ob_start / require_once / ob_get_contents для получения страницы, но в результате она получилась пустой, без каких-либо ошибок в журналах или где-либо остальное. Так как это все равно было навигационным кошмаром, я отказался от этой идеи.

Моя вторая идея состояла в том, чтобы воспользоваться системой WHMCS hooks . Пока что это сработало, кроме одной вещи. Я понятия не имею, как вызвать мой файл 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");

Моя проблема в том, что, хотя заголовок загружается, нет ни мета, ни CSS, ни JavaScript. Эти настройки сохраняются в моем файле view.yml, и партиалы не загружают этот файл.

Мне нужно найти способ сделать что-то вроде echo get_layout("layout"); или echo get_methodaction("whmcs", "index");

Возможно, это что-то глупое, но я ходил по вики, форумам и моей книге Symfony, и я просто не могу найти код, который мне нужно использовать.

Ответы [ 2 ]

3 голосов
/ 29 ноября 2012

Попробуйте использовать 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;

Приведенный выше код отправляет запрос curl на URL $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 голос
/ 28 февраля 2010

В вашем методе действий используйте:

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

Это отобразит вывод указанного модуля и действия в $output; Подробнее см. http://www.symfony -project.org / api / 1_2 / sfController # method_getpresentationfor

...