Domanda

Sto cercando di trovare un modo per integrare il mio sito web, codificato utilizzando Symfony con il mio sistema di fatturazione, WHMCS .

La prima cosa che ho provato è stata la creazione di un nuovo modulo symfony ha chiamato WHMCS e in quel modulo, mi stava usando ob_start / require_once / ob_get_contents retreive la pagina, ma ha mantenuto causando una pagina vuota, senza alcun errore nei registri o dovunque altro. Dal momento che questo sarebbe stato un incubo di navigazione in ogni caso, ho rinunciato a questa idea.

La mia seconda idea era quella di sfruttare la WHMCS aggancia sistema . Finora, ha funzionato tranne una cosa. Non ho idea di come chiamare il mio file layout.php. Qui è il mio codice corrente:

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");

Il mio problema è che, mentre l'intestazione fa carico, non v'è alcuna meta, no css, javascript. Queste impostazioni vengono salvate nel mio file view.yml e parziali non caricare il file.

Ho bisogno di trovare un modo per fare qualcosa di simile echo get_layout("layout"); o echo get_methodaction("whmcs", "index");

E 'probabilmente qualcosa di stupido, ma mi è stato andando attraverso wiki, forum e il mio libro di symfony e non riesco proprio a trovare il codice che ho bisogno di usare.

È stato utile?

Soluzione

Nel vostro metodo di azione, utilizzare:

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

Questo renderà l'uscita del modulo specificato ed azione in $output; vedi http://www.symfony-project.org/api/1_2/sfController #method_getpresentationfor per i dettagli

Altri suggerimenti

Prova a usare 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;

Il codice sopra invia una richiesta di ricciolo alla $url url

$query_string è il dato che si sta per inviare la pagina, se necessario

$query_string = "";
foreach ($postfields AS $k => $v)
    $query_string .= "$k=" . urlencode($v) . "&";

$query_string = trim($query_string, '&');

dove $postfields è un array di parametri da inviare Inoltre è possibile inviare una richiesta AJAX croce dominio (se si sta utilizzando jQuery è sufficiente impostare l'opzione $.ajax dataType a jsonp) e che sarebbe caricare solo la parte contenuto dell'azione (fogli di stile e JavaScript non sono inclusi)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top