So integrieren Sie eine symfony-website mit whmcs
Frage
Ich versuche einen Weg zu finden, zu integrieren my website, codiert mit Symfony mit meinem billing-system, WHMCS.
Das erste, was ich ausprobiert habe, war das erstellen einer neuen symfony-Modul namens whmcs und in das Modul, ich war mit ob_start/require_once/ob_get_contents zum abrufen der Seite, aber es hielt was eine leere Seite, ohne Fehlermeldung in den logs oder sonst irgendwo.Da dies eine navigation Alptraum jedenfalls gab ich auf diese Idee.
Meine zweite Idee war, um die Vorteile der WHMCS-Haken-system.So weit, es hat geklappt bis auf eine Sache.Ich habe keine Ahnung, wie meine layout.php Datei.Hier ist meine aktuellen code:
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");
Mein Problem hier ist, dass, während der header nicht laden, es gibt keine meta -, kein css, kein javascript.Diese Einstellungen werden gespeichert, aus meiner Sicht.yml-Datei und partials nicht, laden Sie die Datei.
Ich muss einen Weg finden, etwas zu tun wie echo get_layout("layout");
oder echo get_methodaction("whmcs", "index");
Es ist wahrscheinlich etwas dummes, aber ich habe gehen durch wikis, Foren und meine symfony-Buch und ich finde nicht den code, den ich verwenden müssen.
Lösung
In Ihrer Aktionsmethode, Verwendung:
$output = $this->getController()->getPresentationFor("module", "action");
Das wird die Ausgabe des angegebenen Moduls und Aktion in $output
machen; finden Sie unter http://www.symfony-project.org/api/1_2/sfController #method_getpresentationfor Details
Andere Tipps
Versuchen Sie, sich zu kräuseln nutzen
$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;
Der obige code sendet eine curl-Anforderung an die url $url
$query_string
die Daten, die Sie gehen, um die post, um die Seite wenn benötigt
$query_string = "";
foreach ($postfields AS $k => $v)
$query_string .= "$k=" . urlencode($v) . "&";
$query_string = trim($query_string, '&');
wo $postfields
ist ein array der Parameter zu senden
Darüber hinaus können Sie senden eine cross-domain-ajax-Anfrage (wenn Sie jQuery man muss nur die $.ajax
option dataType
zu jsonp
) und das laden würde nur der inhaltliche Teil der Aktion (stylesheets und javascripts sind nicht im Lieferumfang enthalten)