首先要看一下Laravel官方文档,这是最新4.2的文档,假设想看中文的话点击此处,基本一样。这个github上的库setup-laravel4-package,也是一步一步介绍怎样创建一个包。并关联相关资源。

这里以创建一个account包为例:

1、假设是首次使用php artisan workbench命令,须要配置app/config/workbench.php中的name和email,在生成包的时候会使用这些信息

2、在项目根文件夹使用。以下的命令生成最初始的包文件夹结构,当中--resources作用是生成相关的view、config和migrations等资源文件夹

1
php artisan workbench fstos/account --resources

包的根文件夹在workbench/fstos/account文件夹,其结构大概例如以下

1
2
3
4
5
6
7
8
9
10
/src
    /Fstos
        /Account
            AccountServiceProvider.php
    /config
    /lang
    /migrations
    /views
/tests
/public

3、将包的'Fstos\Account\AccountServiceProvider'增加到app/config/app.php中"providers"数组中,这样这个包会被载入到应用程序中

4、为本包加入独立路由文件,仅仅需在AccountServiceProvider中的boot函数中加入例如以下代码,并在包的根文件夹创建routes.php文件

1
2
3
4
5
public function boot()
{
$this->package('fstos/account');
    include __DIR__.'/../../routes.php';
}

路由文件例如以下所看到的:

1
2
3
Route::get('account/register',  function(){
    return "account register router";
});

5、OK,如今在你的浏览器測试吧,出现了"account register router",接下来我们尝试使用controller

1
http://localhost/laravel/friends/public/account/register

6、改动routes例如以下所看到的:

1
2
3
4
Route::get('account/register', 
        array('as' => 'account.register.get', 
            'uses' => 'Fstos\Account\RegistrationController@getRegister')
        );

7、在controllers 中新建RegistrationController.php文件,代码例如以下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<?

php
 
namespace Fstos\Account;
 
use Illuminate\Routing\Controller as Controller;
use Illuminate\Support\Facades\View as View;
use Illuminate\Support\Facades\Config as Config;
 
class RegistrationController extends Controller
{
    /**
     * Display the registration form.
     *
     * @return \Illuminate\Http\Response
     */
    public function getRegister()
    {
        return "yes,use controller with route in packages!";
    }
    /**
     * 暂用不到
     */
    protected function setupLayout()
    {
        if (!is_null($this->layout)) {
            $this->layout = View::make($this->layout);
        }
    }
 
}

尝试刷新页面。啊哈,是不是报错了,找不到"Fstos\Account\RegistrationController",Laravel默认是不自己主动查找不论什么文件夹的。须要开发人员自己指定文件的存放文件夹,只是它也给出了建议路径,比方在使用artisan workbench的时候是不是生成了src/controllers文件夹呢。Ok,我们加入自己主动载入路径就可以

8、在包的根文件夹的composer.json的autoload下classmap字段添加"src/controllers"。并在项目根文件夹执行 php artisan dump-autoload,OKOK,我们刷新页面。哈哈出现啦

9、接下来我们要使用views文件!嗯嗯。依照我们理解我们仅仅须要改动controller中代码。是滴,例如以下:

1
2
3
4
5
    public function getRegister()
    {
        return View::make('account.register');
    //  return "yes,use controller with route in packages!";
    }

非常显然他訪问的是app/views/account/register.blade.php视图模板。我们创建这个文件并写入例如以下内容:

1
2
3
<div>
    we are shown in views!
</div>

继续刷新页面吧!

哈哈哈,非常幸运,是这个规则~,只是我们创建一个包并不期望把包中视图放在app/views文件夹吧,是滴,必须得集成到包中。记得src下也有个views呢,好滴好滴。我们把文件放到包src/views/account/register.blade.php中。内容例如以下:

1
2
3
<div>
    we are shown in views under workbench!
</div>

刷新页面吧。我擦。还是原来的页面。是不是Laravel优先加载app/views下的模板文件呢,我们删除app/views/account/。再次刷新页面。又失望了,再次出现了not found页面,在Laravel中。是不会自己主动索引包中的视图文件的,所以我们还须要做一点点工作!

10、在加载视图的时候指定他去包中寻找视图文件就可以。改动controller中代码例如以下:

1
2
3
4
5
    public function getRegister()
    {
        return View::make('account::account.register');
//  return "yes,use controller with route in packages!";
    }

再次刷新页面,我们期待的页面出现了。我们看到controller中使用到了account这个命令空间(详细含义能够看下laravel官方文档),那么这个空间是在哪里指定的呢?

11、我们看下AccountServiceProvider.php文件里boot函数中$this->package('fstos/account');这一行代码,事实上指定了这个包的命令空间和其绑定的文件夹,神马,看不粗来,是滴,这个函数还有第二个(空间名)和第三个(文件夹)參数。只是这个两个參数都有默认值,命名空间的默认值就是account,文件夹默认值就是包根文件夹下的src文件夹,事实上就相当于例如以下写法:

1
$this->package('fstos/account',"account",__DIR__.'/../../');

Ok。你能够去尝试~

小插曲,从第7条往后写了两遍。第一遍保存的时候登录时间过长,保存丢失了,我勒个去,心中各种骂,想想数据备份是多么的重要~

这是我第一公布的位置:http://www.fstos.com/index.php/2014-05-26-09-01-36/81-laravel-packages

在Laravel中一步一步创建Packages的更多相关文章

  1. (转) 一步一步学习ASP.NET 5 (二)- 通过命令行和sublime创建项目

    转发:微软MVP 卢建晖 的文章,希望对大家有帮助. 注:昨天转发之后很多朋友指出了vNext的命名问题,原文作者已经做出了修改,后面的标题都适用 asp.net 5这个名称. 编者语 : 昨天发了第 ...

  2. 一步一步写算法(之prim算法 中)

    原文:一步一步写算法(之prim算法 中) [ 声明:版权所有,欢迎转载,请勿用于商业用途.  联系信箱:feixiaoxing @163.com] C)编写最小生成树,涉及创建.挑选和添加过程 MI ...

  3. 一步一步在Windows中使用MyCat负载均衡 下篇

    之前在 一步一步在Windows中使用MyCat负载均衡 上篇 中已经讲了如何配置出MyCat.下面讲其相关的使用. 五.配置MyCat-eye 对于MyCat监控官网还提供一个MyCat-eye w ...

  4. 一步一步创建ASP.NET MVC5程序[Repository+Autofac+Automapper+SqlSugar](一)

    前言 大家好,我是Rector 从今天开始,Rector将为大家推出一个关于创建ASP.NET MVC5程序[Repository+Autofac+Automapper+SqlSugar]的文章系列, ...

  5. 一步一步创建ASP.NET MVC5程序[Repository+Autofac+Automapper+SqlSugar](五)

    前言 Hi,大家好,我是Rector 时间飞逝,一个星期又过去了,今天还是星期五,Rector在图享网继续跟大家分享系列文本:一步一步创建ASP.NET MVC5程序[Repository+Autof ...

  6. 一步一步创建ASP.NET MVC5程序[Repository+Autofac+Automapper+SqlSugar](四)

    前言 上一篇<一步一步创建ASP.NET MVC5程序[Repository+Autofac+Automapper+SqlSugar](三)>,我们完成了: * 引用SqlSugar * ...

  7. 一步一步创建ASP.NET MVC5程序[Repository+Autofac+Automapper+SqlSugar](三)

    前言 上一篇<一步一步创建ASP.NET MVC5程序[Repository+Autofac+Automapper+SqlSugar](二)>我们通过如下操作: 创建实体及工具类 创建Re ...

  8. 一步一步创建ASP.NET MVC5程序[Repository+Autofac+Automapper+SqlSugar](二)

    前言: 在本系列第一篇<一步一步创建ASP.NET MVC5程序[Repository+Autofac+Automapper+SqlSugar](一)>中,我为大家介绍了搭建空白解决方案以 ...

  9. 一步一步创建ASP.NET MVC5程序[Repository+Autofac+Automapper+SqlSugar](六)

    前言 大家好,我是Rector 又是星期五,很兴奋,很高兴,很high...啦啦啦... Rector在图享网又和大家见面啦!!!上一篇<一步一步创建ASP.NET MVC5程序[Reposit ...

随机推荐

  1. C#中System.Globalization.DateTimeFormatInfo.InvariantInfo怎么用

    原文  C#中System.Globalization.DateTimeFormatInfo.InvariantInfo怎么用 在开发的时候,碰到下面这样一个问题: 在程序中显示当前系统时间,但是有一 ...

  2. [Warning] Aborted connection 11203 to db: 'ide' user: 'nuc' host: 'prd01.mb.com' (Got an error writi

    PS:一台物理机扯分了3个虚拟机,一个主db,一个主备,一个从备. 切换到0301的时候 Sep  6 09:16:16 prddb0301 mysqld: 130906  9:16:16 [Warn ...

  3. 王立平--PopupWindow

    MainActivity.java <span style="font-size:14px;">package com.main; import android.app ...

  4. 使用nginx的rewrite实现代理指定文件夹命令方法

    使用nginx的rewrite实现代理指定文件夹命令方法 使用nginx代理Tomcat,Tomcat公布web的时候通常都是带着项目名称的. 比方项目名称为"aven".那么公布 ...

  5. JQuery+AJax - 无刷新使用验证码

    最终效果: 项目目录: Default.aspx前端代码: <%@ Page Language="C#" AutoEventWireup="true" C ...

  6. 测试framebuffer

    static GGLContext *gr_context = 0; static GGLSurface gr_framebuffer[2]; static unsigned gr_active_fb ...

  7. Spring Boot——开发新一代Spring应用

    Spring官方网站本身使用Spring框架开发,随着功能以及业务逻辑的日益复杂,应用伴随着大量的XML配置文件以及复杂的Bean依赖关系.随着Spring 3.0的发布,Spring IO团队逐渐开 ...

  8. boost在windows下的编译(vs2010)

    首先说下环境,win7,vs2010. 先在http://www.boost.org/users/download/上下载boost安装包,我下的是1.52.0版. 按照说明,直接运行“bootstr ...

  9. 福州大学第十届校赛 & fzu 2128最长子串

    思路: 对于每个子串,求出 母串中 所有该子串 的 开始和结束位置,保存在 mark数组中,求完所有子串后,对mark数组按 结束位置排序,然后 用后一个的结束位置 减去 前一个的 开始 位置 再 减 ...

  10. .NET Core R2

    .NET Core R2安装及示例教程   前言 前几天.NET Core发布了.NET Core 1.0.1 R2 预览版,之前想着有时间尝试下.NET Core.由于各种原因,就没有初试.刚好,前 ...