我即将开始使用Laravel4开发网站,该网站将包含托管在子域上的cms。我想知道是否有办法在两个应用程序之间共享主要的Laravel安装?
我在使用以下示例进行测试方面取得了各种成功:Laravel full URL routing但是我希望将应用程序文件夹中的功能保持独立,并使用say,app_main,app_cms来保存相关模型,视图和那里的每个站点的控制器。
在如何设置Laravel以满足这样的要求方面似乎没有太多帮助,所以对此的任何帮助都会很棒。
答案 0 :(得分:1)
我有一个多主机解决方案,登录到FTP后包含这个文件夹:
domaina.com
domainb.com
domainc.com
如果我想在这些网站之间共享相同的Laravel代码, 我只是在同一级别创建'Laravel'文件夹,所以它看起来像这样:
domaina.com
domainb.com
domainc.com
laravel
这个'laravel'文件夹包含除“app”和“app”之外的所有内容。 'public'目录。
我只是将'public'目录的内容放在'domaina.com'文件夹中(例如)。 打开'index.php'并调整这些行以匹配实际位置。 现在你很高兴
require __DIR__.'/../bootstrap/autoload.php';
$app = require_once __DIR__.'/../bootstrap/start.php';
答案 1 :(得分:0)
bootstrap/paths.php
包含主文件夹定义。对于每个实例,您可以从文件中更改应用程序文件夹,公用文件夹,基本文件夹,存储文件夹等。
您可以为主要和子域设置cookie /会话,或检查域等,并将其更改为:
'app' => Session::has('subdomain')?'../../app':__DIR__.'/../app',
答案 2 :(得分:0)
使用路由器。
e.g。
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,您可以使用名称空间来控制器。
e.g。您的控制器文件夹可能如下所示
App
|
|---Controllers
|-- site
|
|-----HomeController.php
|-- subdomain
|
|-----HomeController.php
现在,对于站点控制器,请使用类似<?php namespace site;?>
对于子域控制器,请使用<?php namespace subdomain;?>
,将路由定义为
Route::group(array('domain'=>'example.com'), function(){
Route::get('/', array(
'as' => 'index',
'uses' => '\site\HomeController@index'
))
});
表示子域名,
Route::group(array('domain'=>'cms.example.com'), function(){
Route::get('/', array(
'as' => 'cms.index',
'uses' => '\subdomain\HomeController@index'
))
});
简单明了。