Вопрос

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

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

Моя вторая идея состояла в том, чтобы воспользоваться преимуществами Система крючков WHMCS.До сих пор это работало, за исключением одной вещи.Я понятия не имею, как вызвать мой 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 и просто не могу найти код, который мне нужно использовать.

Это было полезно?

Решение

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

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

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

Другие советы

Попробуйте использовать 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 не включены)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top