在Laravel中一步一步创建Packages

首先要看一下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\[email protected]‘)
        );

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

时间: 2024-10-11 09:58:58

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

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

转发:微软MVP 卢建晖 的文章,希望对大家有帮助. 注:昨天转发之后很多朋友指出了vNext的命名问题,原文作者已经做出了修改,后面的标题都适用 asp.net 5这个名称. 编者语 : 昨天发了第一篇文章,再次谢谢大家给的意见和反馈,这里说明因为现在ASP.NET 5还在beta阶段,很多的不确定性,我会不断修正,说不定正式版本也会有改,这里我还是要吐槽微软改名字....我尊重算了.        今天跟大家说说如何创建你的ASP.NET 5项目.或者用惯了Visual Studio 的模版

一步一步教你在 Android 里创建自己的账号系统(一)

大家如果喜欢我的博客,请关注一下我的微博,请点击这里(http://weibo.com/kifile),谢谢 转载请标明出处(http://blog.csdn.net/kifile),再次感谢 大家在平时使用 Android 手机的时候,都会发现有些应用(例如 qq,微信,淘宝)为自己创建了账号系统,并且能够在设置页面看到他,可是当自己希望为自己的软件写一个账号系统的时候总是不知从何入手,现在我们就从头开始,一步一步打造属于自己应用的账号系统. 在进行设备账户管理的时候,我们会通过一个 Acco

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

原文:一步一步写算法(之prim算法 中) [ 声明:版权所有,欢迎转载,请勿用于商业用途.  联系信箱:feixiaoxing @163.com] C)编写最小生成树,涉及创建.挑选和添加过程 MINI_GENERATE_TREE* get_mini_tree_from_graph(GRAPH* pGraph) { MINI_GENERATE_TREE* pMiniTree; DIR_LINE pDirLine; if(NULL == pGraph || NULL == pGraph->hea

【机房重构】一步一步往上爬——七层中的那些事

机房重构开始已经一个多星期了,从最开始的理解登录到现在已经成功完成至少一次的"增"."删"."改"."查"的操作,现在在七层的这个大环境下,从最开始的奄奄一息,终于变得生龙活虎起来了. 之前总是听师哥师姐们说,敲完登录一条线了,后面就会很顺利了.可是,从我来说,事实并非如此.然而,磕磕绊绊,四个字足以形容我的这些天.不过,我心态好,我可以忍受一个人花时间调代码的孤独,再说,我也可以找小伙伴.找师父帮助我,我有什么理由不成功.

一步一步跟我学习lucene(6)---lucene索引优化之多线程创建索引

这两天工作有点忙,博客更新不及时,请大家见谅: 前面了解到lucene在索引创建的时候一个IndexWriter获取到一个读写锁,这样势在lucene创建大数据量的索引的时候,执行效率低下的问题: 查看前面文档一步一步跟我学习lucene(5)---lucene的索引构建原理可以看出,lucene索引的建立,跟以下几点关联很大: 磁盘空间大小,这个直接影响索引的建立,甚至会造成索引写入提示完成,但是没有同步的问题: 索引合并策略的选择,这个类似于sql里边的批量操作,批量操作的数量过多直接影响执

一步一步教你在 Android 里创建自己的账号系统(二)--同步数据以及设计账号页面

大家如果喜欢我的博客,请关注一下我的微博,请点击这里(http://weibo.com/kifile),谢谢 转载请标明出处(http://blog.csdn.net/kifile),再次感谢 在前一篇文章中(一步一步教你在 Android 里创建自己的账号系统(一)),我向大家介绍了如何在 Android 系统中创建自己的账户系统,接下来我会向大家详细介绍一下如何使用账户系统. (一)同步数据 通常而言,我们会在两种情况下使用我们的账号系统: (1)登陆验证 登陆验证其实是一个很实用的功能,试

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

前言 小伙伴们,大家好,我是Rector.最近Rector忙于换工作,没有太多时间来更新我们的ASP.NET MVC 5系列文章 [一步一步创建ASP.NET MVC5程序Repository+Autofac+Automapper+SqlSugar],直到现在才挤些时间赶紧更新一篇,小伙伴们等得太久了. 写系列文章是一件并不容易的事情,相信有过写系列文章经验朋友也应该有所体会. 本文知识要点 本期是该系列的第十一篇,上一篇<一步一步创建ASP.NET MVC5程序[Repository+Auto

微凉大大,教你一步一步在linux中正确的安装Xcache加速php。

首先,强烈吐槽,百度上的教程,都左复制右复制的,乱七八糟,缺东缺西的.借此微凉大大我提供我苦心整理好的教程.以便各位小菜能顺利的使用Xcache加速php,假设看完了,也操作了,还是失败了的话,请联系微凉大大的QQ 496928838,微凉大大也想看看你是怎样一步一步都装不上. 微凉大大原创资料,转载跪求你保留好我的信息. #第一步,下载Xcache wget http://xcache.lighttpd.net/pub/Releases/3.1.0/xcache-3.1.0.tar.gz #第

使用Windows Azure 第一步就应该创建地缘组Affinity groups

Windows Azure目前在全球有八大数据中心(美国西部,美国东部,美国中北部,美国中南部,北欧,西欧,东亚,南亚).还有中国南北两个数据中心.每个数据中心都由若干个"容器"组成,"容器"的内部是集群(cluster)和机架(rack).每一个容器都有特定的服务,比如计算和存储,SQL Database和服务总线(Service Bus),访问控***务(Access Control Service)等等. 我们不但要在同一个数据中心创建托管服务和存储账户,最好