سؤال

أحاول إيجاد طريقة لدمج موقع الويب الخاص بي ، مشفر باستخدام Symfony مع نظام الفواتير الخاص بي ، WHMCs.

أول شيء جربته هو إنشاء وحدة Symfony جديدة تسمى WHMCs وفي تلك الوحدة ، كنت أستخدم OB_START/requist_once/ob_get_contents لإعادة تشغيل الصفحة ولكنها استمرت في صفحة فارغة ، دون أي خطأ في السجلات أو في أي مكان آخر. نظرًا لأن هذا سيكون كابوسًا للملاحة على أي حال ، فقد تخليت عن هذه الفكرة.

كانت فكرتي الثانية هي الاستفادة من نظام السنانير WHMCS. حتى الآن ، نجحت باستثناء شيء واحد. ليس لدي أي فكرة عن كيفية استدعاء ملف التصميم الخاص بي. هنا هو قانون بلدي الحالي:

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. يتم حفظ هذه الإعدادات في ملف العرض الخاص بي.

أحتاج إلى إيجاد طريقة لفعل شيء مثل echo get_layout("layout"); أو echo get_methodaction("whmcs", "index");

من المحتمل أن يكون شيئًا سخيفًا ، لكنني كنت أذهب من خلال Wikis والمنتديات وكتاب Symfony الخاص بي ولا يمكنني العثور على الكود الذي أحتاجه إلى استخدامه.

هل كانت مفيدة؟

المحلول

في طريقة الإجراء الخاصة بك ، استخدم:

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

سيؤدي ذلك إلى جعل إخراج الوحدة النمطية المحددة والعمل في $output; ؛ يرى http://www.symfony-project.org/api/1_2/sfcontroller#method_getpresentationfor للتفاصيل

نصائح أخرى

حاول استخدام حليقة

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

يرسل الرمز أعلاه طلب حليقة إلى عنوان 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