在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等资源文件夹
php artisan workbench fstos/account --resources
包的根文件夹在workbench/fstos/account文件夹,其结构大概例如以下
/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文件
public function boot()
{
$this->package('fstos/account');
include __DIR__.'/../../routes.php';
}
路由文件例如以下所看到的:
Route::get('account/register', function(){
return "account register router";
});
5、OK,如今在你的浏览器測试吧,出现了"account register router",接下来我们尝试使用controller
http://localhost/laravel/friends/public/account/register
6、改动routes例如以下所看到的:
Route::get('account/register',
array('as' => 'account.register.get',
'uses' => 'Fstos\Account\RegistrationController@getRegister')
);
7、在controllers 中新建RegistrationController.php文件,代码例如以下:
<? 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中代码。是滴,例如以下:
public function getRegister()
{
return View::make('account.register');
// return "yes,use controller with route in packages!";
}
非常显然他訪问的是app/views/account/register.blade.php视图模板。我们创建这个文件并写入例如以下内容:
<div>
we are shown in views!
</div>
继续刷新页面吧!
哈哈哈,非常幸运,是这个规则~,只是我们创建一个包并不期望把包中视图放在app/views文件夹吧,是滴,必须得集成到包中。记得src下也有个views呢,好滴好滴。我们把文件放到包src/views/account/register.blade.php中。内容例如以下:
<div>
we are shown in views under workbench!
</div>
刷新页面吧。我擦。还是原来的页面。是不是Laravel优先加载app/views下的模板文件呢,我们删除app/views/account/。再次刷新页面。又失望了,再次出现了not found页面,在Laravel中。是不会自己主动索引包中的视图文件的,所以我们还须要做一点点工作!
10、在加载视图的时候指定他去包中寻找视图文件就可以。改动controller中代码例如以下:
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文件夹,事实上就相当于例如以下写法:
$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的更多相关文章
- (转) 一步一步学习ASP.NET 5 (二)- 通过命令行和sublime创建项目
转发:微软MVP 卢建晖 的文章,希望对大家有帮助. 注:昨天转发之后很多朋友指出了vNext的命名问题,原文作者已经做出了修改,后面的标题都适用 asp.net 5这个名称. 编者语 : 昨天发了第 ...
- 一步一步写算法(之prim算法 中)
原文:一步一步写算法(之prim算法 中) [ 声明:版权所有,欢迎转载,请勿用于商业用途. 联系信箱:feixiaoxing @163.com] C)编写最小生成树,涉及创建.挑选和添加过程 MI ...
- 一步一步在Windows中使用MyCat负载均衡 下篇
之前在 一步一步在Windows中使用MyCat负载均衡 上篇 中已经讲了如何配置出MyCat.下面讲其相关的使用. 五.配置MyCat-eye 对于MyCat监控官网还提供一个MyCat-eye w ...
- 一步一步创建ASP.NET MVC5程序[Repository+Autofac+Automapper+SqlSugar](一)
前言 大家好,我是Rector 从今天开始,Rector将为大家推出一个关于创建ASP.NET MVC5程序[Repository+Autofac+Automapper+SqlSugar]的文章系列, ...
- 一步一步创建ASP.NET MVC5程序[Repository+Autofac+Automapper+SqlSugar](五)
前言 Hi,大家好,我是Rector 时间飞逝,一个星期又过去了,今天还是星期五,Rector在图享网继续跟大家分享系列文本:一步一步创建ASP.NET MVC5程序[Repository+Autof ...
- 一步一步创建ASP.NET MVC5程序[Repository+Autofac+Automapper+SqlSugar](四)
前言 上一篇<一步一步创建ASP.NET MVC5程序[Repository+Autofac+Automapper+SqlSugar](三)>,我们完成了: * 引用SqlSugar * ...
- 一步一步创建ASP.NET MVC5程序[Repository+Autofac+Automapper+SqlSugar](三)
前言 上一篇<一步一步创建ASP.NET MVC5程序[Repository+Autofac+Automapper+SqlSugar](二)>我们通过如下操作: 创建实体及工具类 创建Re ...
- 一步一步创建ASP.NET MVC5程序[Repository+Autofac+Automapper+SqlSugar](二)
前言: 在本系列第一篇<一步一步创建ASP.NET MVC5程序[Repository+Autofac+Automapper+SqlSugar](一)>中,我为大家介绍了搭建空白解决方案以 ...
- 一步一步创建ASP.NET MVC5程序[Repository+Autofac+Automapper+SqlSugar](六)
前言 大家好,我是Rector 又是星期五,很兴奋,很高兴,很high...啦啦啦... Rector在图享网又和大家见面啦!!!上一篇<一步一步创建ASP.NET MVC5程序[Reposit ...
随机推荐
- 基于visual Studio2013解决C语言竞赛题之1087数字变换
题目 解决代码及点评 /************************************************************************/ /* ...
- quartz 2.1学习(一)
quartz是一种开源任务调度框架,提供了强大的任务调度机制,Quartz允许开发人员灵活地定义触发器的调度时间表,并可对触发器和任务进行关联映射.废话不多说了,介绍一下编程的基本步骤: 实现Job接 ...
- Android NDK 简单介绍、工具安装、环境配置
NDK全称:Native Development Kit. 1.NDK是一系列工具的集合. * NDK提供了一系列的工具,帮助开发人员高速开发C(或C++)的动态库,并能自己主动将so和java应用一 ...
- select的种种取值
今天别人问我一个问题 <body> <select id="tests" onchange="test()"> <option & ...
- linux配置本地tomcat应用80端口转发
场景: 本地部署tomcat到8080端口,并期望本地访问80端口来访问本地tomcat. 结论: 使用linux下的iptables工具实现端口转发功能. 具体为 现取得root权限 执行iptab ...
- session对象和applicatione对象
ASP.NET 的常用对象有:response对象.request对象.application对象.server对象.session对象.下面主要讨论session对象和cookie对象. sessi ...
- Swift - 歌曲播放样例(附带播放时间和播放进度)
使用MPMoviePlayerController我们可以是进行音乐播放,下面是一个播放器样例.同时,播放时还可以显示播放时间和播放进度. 1 2 3 4 5 6 7 8 9 10 11 12 13 ...
- Lucene.Net 2.3.1开发介绍 —— 四、搜索(一)
原文:Lucene.Net 2.3.1开发介绍 -- 四.搜索(一) 既然是内容筛选,或者说是搜索引擎,有索引,必然要有搜索.搜索虽然与索引有关,那也只是与索引后的文件有关,和索引的程序是无关的,因此 ...
- android binder机制之——(创建binder服务)
Binder机制编程 前面的几篇文章具体介绍了android中binder机制的方方面面,相信你对binder机制已经有了较深刻的理解.俗话说得好"学以致用",以下我们就通过在 ...
- Ogre嵌入MFC傻瓜全然教程(三)
经过前两两篇博文的解说.我们已经完毕了渲染工作,但仅仅是渲染而没有交互性,本篇博文我们就来加上事件的处理方法. 首先我们须要为项目加入一个帧监听类:CMyFrameListener,为了直观,在这直接 ...