Question

Je suis en train de trouver un moyen d'intégrer mon site Web, codé en utilisant Symfony avec mon système de facturation, WHMCS .

La première chose que j'ai essayé était de créer un nouveau module symfony appelé whmcs et dans ce module, j'utilisais ob_start / require_once / ob_get_contents pour récupérer la page, mais il a gardé pour résultat une page blanche, sans aucune erreur dans les journaux ou partout autre. Depuis que cela allait être un cauchemar de navigation de toute façon, j'ai renoncé à cette idée.

Ma deuxième idée était de profiter de la WHMCS crochets système . Jusqu'à présent, cela a fonctionné, sauf pour une chose. Je ne sais pas comment appeler mon dossier layout.php. Voici mon code actuel:

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

Mon problème ici est que, alors que l'en-tête ne se charge, il n'y a pas de méta, pas css, javascript pas. Ces paramètres sont enregistrés dans mon fichier view.yml et partials ne chargent pas ce fichier.

Je dois trouver un moyen de faire quelque chose comme echo get_layout("layout"); ou echo get_methodaction("whmcs", "index");

Il est probablement quelque chose de stupide, mais je l'ai été à travers les wikis, va forums et mon livre Symfony et je ne peux pas trouver le code que je dois utiliser.

Était-ce utile?

La solution

Dans votre méthode d'action, utilisez:

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

Ceci rendra la sortie du module et de l'action spécifiée dans $output; voir http://www.symfony-project.org/api/1_2/sfController #method_getpresentationfor pour plus de détails

Autres conseils

Essayez d'utiliser boucle

$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;

Le code envoie ci-dessus une demande à la boucle $url url

$query_string est les données que vous allez poster sur la page si nécessaire

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

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

$postfields est un tableau des paramètres à envoyer En outre, vous pouvez envoyer une demande de paiement ajax inter-domaine (si vous utilisez jQuery vous définissez simplement l'option $.ajax dataType à jsonp) et que chargeriez seule la partie du contenu de l'action (feuilles de style et javascripts ne sont pas inclus)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top