【问题标题】:How to make modular system in laravel如何在 laravel 中制作模块化系统
【发布时间】:2014-06-21 18:31:54
【问题描述】:

我正在尝试在 Laravel 4.1 中创建一个模块化系统。

我有如下文件夹:

app
app/controllers
app/controllers/BaseController.php
app/views/
app/modules/
app/modules/moduleName/
app/modules/moduleName/routes.php
app/modules/moduleName/controllers/
app/modules/moduleName/controllers/module.php

当我尝试扩展 BaseController 时,我使用了命名空间并收到以下错误:

 Symfony \ Component \ Debug \ Exception \ FatalErrorException
 Class 'Illuminate\Session' not found

这是我的 module.php 代码:

 <?php namespace App\Modules\Twitter\Controllers;

 use Illuminate\Routing\Controllers\Controller;

 class Modulename extends Controller {

 }

我有两个问题。

  1. 如何在模块中调用会话类?
  2. 我在每个模块中都有 route.php 文件,但仍然无法路由 模块。因此我应该使用 laravel 默认的 routes.php 文件。 我该如何解决这个问题?

还是谢谢。

【问题讨论】:

  • 您的树还不够,我们需要查看一些代码,以尝试了解您的工作方式以及可能发生的情况。
  • 我刚刚添加了我的模块的介绍代码。

标签: php laravel module laravel-4


【解决方案1】:

Laravel 库都存在于全局命名空间中,因此如果您使用任何类型的命名空间代码,则需要指定您正在调用的库。

使用您提供的代码,它会是这样的:

<?php namespace App\Modules\Twitter\Controllers;

 use Controller, Session;

 class Modulename extends Controller {

 }

这使您不必输入整个命名空间。

【讨论】:

  • 太棒了!它对我有用。谢谢。但是路由呢? (第二个问题)
  • 好吧,路由非常简单,而且 Laravel 无论如何都是作为一个模块化系统工作的,所以只需正确地命名所有内容就足够了。究竟是什么问题?
  • 我想添加模块自己的 routing.php 例如app/modules/moduleName/routes.php 不是默认 laravel routes.php
  • 只在主routes.php中包含每个模块的路由文件?
猜你喜欢
  • 2013-04-04
  • 2014-04-11
  • 1970-01-01
  • 2017-09-01
  • 2011-04-23
  • 1970-01-01
  • 1970-01-01
  • 2013-11-24
  • 1970-01-01
相关资源
最近更新 更多