在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 ...
随机推荐
- 例解 autoconf 和 automake 生成 Makefile 文件
本文介绍了在 linux 系统中,通过 Gnu autoconf 和 automake 生成 Makefile 的方法.主要探讨了生成 Makefile 的来龙去脉及其机理,接着详细介绍了配置 Con ...
- 查找后去掉EditTextView的焦点
//在按钮点击事件里处理 bt_search.setOnClickListener(new OnClickListener() { public void onClick(View v) { ...
- A - Alignment of Code(推荐)
You are working in a team that writes Incredibly Customizable Programming Codewriter (ICPC) which is ...
- [课堂实践与项目]IOS优先级的计算器
这个计算器主要是使用数组进行实现的.虽然没有使用前缀后缀表达式,但是是一种方法o. .h文件 // // LCViewController.h // 具有优先级的calculator // // Cr ...
- cocos2d-x游戏开发系列教程-编译运行我们的第一个cocos2d-x游戏程序
环境准备和介绍: 操作系统:64位Windows 7 sp1(Microsoft Windows [版本 6.1.7601]) 必要的软件和源码: visual_studio_ultimate_201 ...
- boost::asio设置同步连接超时
boost::asio设置同步连接超时 CSDN上求助无果,只好用自创的非主流方法了.asio自带的例子里是用deadline_timer的async_wait方法来实现超时的,这种方法需要单独写 ...
- 关于时间,日期,星期,月份的算法(Java中Calendar的用法)(一)
package cn.outofmemory.codes.Date; import java.util.Calendar; import java.util.Date; public class Ca ...
- Swift - 列表项尾部附件点击响应(感叹号,箭头等)
列表单元格尾部可以添加各种样式的附件,如感叹号,三角箭头等.而且点击内容区域与点击附件的这两个响应事件是不同的,这样可以方便我们实现不同的功能(比如点击内容则查看详情,点击感叹号则编辑) 1 2 3 ...
- php与文件操作
一.目录操作 首先是从目录读取的函数,opendir(),readdir(),closedir(),使用的时候是先打开文件句柄,而后迭代列出: <?php $base_dir="fil ...
- VK Cup 2012 Qualification Round 1---C. Cd and pwd commands
Cd and pwd commands time limit per test 3 seconds memory limit per test 256 megabytes input standard ...