2013-10-04 41 views
0

我即將開始使用Laravel4開發一個站點,該站點將包含託管在子域上的cms。我想知道的是,是否有一種方法可以在兩個應用程序之間共享主要的Laravel安裝?託管在Laravel 4上運行的兩個不同應用程序共享託管

我有各種成功使用下面的例子測試:Laravel full URL routing,但是我想保持從app文件夾的功能分開,並有類似的發言權,app_main,保存相關的模型,視圖和控制器app_cms每個站點在那裏。

似乎沒有太多的幫助,我可以找到如何設置Laravel這樣的要求,所以對此的任何幫助將是偉大的。

回答

1

我有一個多重主機的解決方案,登錄到FTP後,包含此文件夾:

domaina.com 
domainb.com 
domainc.com 

如果我想這些網站之間共享相同的Laravel代碼, 我只是創建「Laravel」文件夾在同一水平上,因此它看起來就像這樣:

domaina.com 
domainb.com 
domainc.com 
laravel 

此'laravel'文件夾包含'app'&'public'目錄以外的所有內容。

我只在'domaina.com'文件夾(例如)內部放置'public'目錄的內容。 打開'index.php'並調整這些行以匹配實際位置。 現在你很好走

require __DIR__.'/../bootstrap/autoload.php'; 

$app = require_once __DIR__.'/../bootstrap/start.php'; 
+0

這個看起來對我最有吸引力,玩過之後終於找到了這個方法。我必須更改bootstrap文件夾中的paths.php文件,特別是設置'base'=> __DIR __。'/ ../..',並將我的工作臺文件夾包括在新的域文件夾中,總而言之,招。 對提供解決方案的其他人的榮譽,沒有嘗試過,但感謝投入,但給了我幾個考慮。 – vinman75

+0

@andreyco我有同樣的情況,我有一個網站www.ideconnect.com這基本上是questionair,現在我想上傳另一個類似的網站與ideconnect的子domian一些你可以請幫助我與此。 對於當前網站,我將公用文件夾的內容保存在我的網站公用文件夾中,並保留在publuic文件夾外的另一個文件夾中。 – Vikram

0

bootstrap/paths.php包含主文件夾定義。對於每個實例,您可以從文件中更改應用程序文件夾,公用文件夾,基本文件夾,存儲文件夾等。

您可以設置cookie /會話,或者檢查域等主和子,並改變它想:

'app' => Session::has('subdomain')?'../../app':__DIR__.'/../app', 
0

使用路由器爲此。

例如

Route::group(array('domain'=>'example.com'), function(){ 
//Define the routes for example.com 
}); 

Route::group(array('domain'=>'cms.example.com'), function(){ 
//Define the routes for cms.example.com 
}); 

爲了方便maintanace,您可以使用控制器的命名空間。

例如你的控制器文件夾可以像這樣

App 
| 
|---Controllers 
    |-- site 
     | 
     |-----HomeController.php 

    |-- subdomain 
     | 
     |-----HomeController.php 

現在,站點控制器,使用namspace一樣,<?php namespace site;?>

的子域控制器,使用像<?php namespace subdomain;?>

命名空間中的路徑文件,定義如航線,

Route::group(array('domain'=>'example.com'), function(){ 
    Route::get('/', array(
     'as' => 'index', 
     'uses' => '\site\[email protected]' 
    )) 
}); 

子域,

Route::group(array('domain'=>'cms.example.com'), function(){ 
    Route::get('/', array(
     'as' => 'cms.index', 
     'uses' => '\subdomain\[email protected]' 
    )) 
}); 

簡單而簡單的方法。