0

我即将开始使用 Laravel4 开发一个站点,该站点将包含一个托管在子域上的 cms。我想知道是否有办法在两个应用程序之间共享主要的 Laravel 安装?

我在使用以下示例进行测试时取得了各种成功:Laravel full URL routing,但是我想将 app 文件夹中的功能分开,并有一些类似 app_main、app_cms 的内容,其中包含每个相关的模型、视图和控制器网站在那里。

在如何为这样的要求设置 Laravel 方面,我似乎找不到太多帮助,所以任何关于这方面的帮助都会很棒。

4

3 回答 3

1

我有一个多主机解决方案,在登录 FTP 后包含以下文件夹:

domaina.com
domainb.com
domainc.com

如果我想在这些网站之间共享相同的 Laravel 代码,我只需在同一级别创建“Laravel”文件夹,它看起来就像这样:

domaina.com
domainb.com
domainc.com
laravel

这个“laravel”文件夹包含除“app”和“public”目录之外的所有内容。

我只是将“public”目录的内容放在“domaina.com”文件夹中(例如)。打开“index.php”并调整这些行以匹配实际位置。现在你可以走了

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

$app = require_once __DIR__.'/../bootstrap/start.php';
于 2013-10-04T12:35:39.787 回答
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
});

为了更容易维护,您可以为控制器使用命名空间。

例如,您的控制器文件夹可能如下所示

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'
    ))
});

简单明了的方法。

于 2013-10-04T17:07:34.170 回答
0

bootstrap/paths.php保存主文件夹定义。对于每个实例,您可以从文件中更改应用程序文件夹、公用文件夹、基本文件夹、存储文件夹等。

您可以设置 cookie/会话,或检查主域和子域的域等,并将其更改为:

'app' => Session::has('subdomain')?'../../app':__DIR__.'/../app',
于 2013-10-04T12:33:09.460 回答