![](/img/trans.png)
[英]Hosting two different applications running on Laravel 4 on shared hosting - part 2
[英]Hosting two different applications running on Laravel 4 on shared hosting
我即将开始使用Laravel4开发网站,该网站将包含托管在子域中的cms。 我想知道是否有办法在两个应用程序之间共享主要的Laravel安装?
我使用以下示例在测试中取得了各种成功: Laravel完整URL路由 ,但是我想将app文件夹中的功能分开,并使用诸如app_main,app_cms之类的东西来保存每个模型的相关模型,视图和控制器网站在那里。
在如何针对这样的要求设置Laravel方面,我似乎找不到太多帮助,因此对此的任何帮助都将非常有用。
我有一个多主机解决方案,登录到FTP后包含以下文件夹:
domaina.com
domainb.com
domainc.com
如果我想在这些网站之间共享相同的Laravel代码,则只需在同一级别上创建“ Laravel”文件夹,因此它看起来像这样:
domaina.com
domainb.com
domainc.com
laravel
该“ laravel”文件夹包含除“ app”和“ public”目录以外的所有内容。
我只是将“公共”目录的内容直接放在“ domaina.com”文件夹中(例如)。 打开“ index.php”并调整这些行以匹配实际位置。 现在你可以走了
require __DIR__.'/../bootstrap/autoload.php';
$app = require_once __DIR__.'/../bootstrap/start.php';
bootstrap/paths.php
包含主文件夹定义。 对于每个实例,您可以从文件更改app文件夹,公用文件夹,基本文件夹,存储文件夹等。
您可以设置Cookie /会话,或检查主域和子域的域等,并进行如下更改:
'app' => Session::has('subdomain')?'../../app':__DIR__.'/../app',
为此使用路由器。
例如
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;?>
类的namspace <?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'
))
});
简单明了的方式。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.