Integratiing Zend Framework ve Geeklog

2 Cevap php

Biz çalışan bir Geeklog yönetilen site var

http://bhaa.ie

Bu sayfayı yöneten bir alt biz son zamanlarda kurulum zend uygulama

http://bhaa.ie/members/public/index.php/event/list

Biz bu url diyoruz böylece daha iyi, iki alanı entegre umuyoruz

http://bhaa.ie/event/list

Geeklog diğer tüm isteklerini işleme sırasında ve, isteği işlemek zend var.

I görmek gibi - biz 2 seçeneğiniz var

1: Update the .htaccess file to filter url requests between the geeklog and zend instances. or 2: Update the geeklog index.php to include the basic zend code

Ben sadece merak ediyorum kimseye bunu yaparken herhangi bir deneyime sahip, ya da hangi yolu izleyeceğine tavsiye verebilecek?

2 Cevap

Eğer sadece ZF-tabanlı bir uygulama (i.e. event/list ve diğerleri sadece bir çift) URL'den bir çift varsa, ben ilk çözümü ile devam ediyorum:. Htaccess RewriteRules bir çift eklemek ZF-tabanlı bir uygulama için belirli URL'leri yeniden yönlendirmek için, Geeklog web sitesinin dosya.

Bu şekilde, iki uygulama oldukça ayrılmış kalır: Eğer iki uygulama arasındaki karma bulunuyor herhangi bir kod yok - ikinci çözüm gibi ima eder.

Geeklog harici sayfasını etkinleştirmek için izin verir, ancak varsayılan Zend. / Public / index.php bir Geeklog özel yöntemini çağırmanız gerekir.

Aşağıdaki örnekte, i zorunda

  1. Geeklog php set_include_path in kütüphanesi () içerir
  2. Zend app çağırmadan önce EXP_externalAccess () yöntemini çağırın.

'/ Public / index.php' için tam kodu

<?php

// Define path to application directory
defined('APPLICATION_PATH')
    || define('APPLICATION_PATH', realpath(dirname(__FILE__) . '/../application'));

// Define application environment
defined('APPLICATION_ENV')
    || define('APPLICATION_ENV', (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV') : 'production'));

// Ensure library/ is on include_path
set_include_path(implode(PATH_SEPARATOR, array(
    realpath(APPLICATION_PATH . '/../library'),
    realpath(APPLICATION_PATH),
    '/home/bhaa1/public_html/lib-common.php',
    get_include_path()
)));

/** Zend_Application */
require_once '/home/bhaa1/public_html/lib-common.php';

$page_name = substr($_SERVER['SCRIPT_NAME'], 1);

if (!EXP_externalAccess($page_name)) {
    $display = COM_siteHeader('menu');
    $display .= COM_startBlock($LANG_EX00['access_denied']);
    $display .= '<div align="center"><b>' . 
                $LANG_EX00['access_msg'] . 
                '</b></div>';
    $display .= COM_endBlock();
    $display .= COM_siteFooter(yes);
    echo $display;
    exit;
}

require_once 'Zend/Application.php';  

// Create application, bootstrap, and run
$application = new Zend_Application(
    APPLICATION_ENV, 
    APPLICATION_PATH . '/configs/dashboard.ini'
);

$application->bootstrap()->run();
?>

Bu kullanıcı doğru izinlere sahip olduğunda sayfası yalnızca çağrılır sağlar.

Son adım zend uygulaması tarafından işlenen html sarma geek günlüğü 'menüsünden' ve 'altbilgi' var benim layout.phtml güncellemek için olduğunu.

<?php echo COM_siteHeader('menu');?>

// .. ZEND LAYOUT STUFF

<?php echo COM_siteHeader('end');?>