在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 ...
随机推荐
- C#中System.Globalization.DateTimeFormatInfo.InvariantInfo怎么用
原文 C#中System.Globalization.DateTimeFormatInfo.InvariantInfo怎么用 在开发的时候,碰到下面这样一个问题: 在程序中显示当前系统时间,但是有一 ...
- [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 ...
- 王立平--PopupWindow
MainActivity.java <span style="font-size:14px;">package com.main; import android.app ...
- 使用nginx的rewrite实现代理指定文件夹命令方法
使用nginx的rewrite实现代理指定文件夹命令方法 使用nginx代理Tomcat,Tomcat公布web的时候通常都是带着项目名称的. 比方项目名称为"aven".那么公布 ...
- JQuery+AJax - 无刷新使用验证码
最终效果: 项目目录: Default.aspx前端代码: <%@ Page Language="C#" AutoEventWireup="true" C ...
- 测试framebuffer
static GGLContext *gr_context = 0; static GGLSurface gr_framebuffer[2]; static unsigned gr_active_fb ...
- Spring Boot——开发新一代Spring应用
Spring官方网站本身使用Spring框架开发,随着功能以及业务逻辑的日益复杂,应用伴随着大量的XML配置文件以及复杂的Bean依赖关系.随着Spring 3.0的发布,Spring IO团队逐渐开 ...
- boost在windows下的编译(vs2010)
首先说下环境,win7,vs2010. 先在http://www.boost.org/users/download/上下载boost安装包,我下的是1.52.0版. 按照说明,直接运行“bootstr ...
- 福州大学第十届校赛 & fzu 2128最长子串
思路: 对于每个子串,求出 母串中 所有该子串 的 开始和结束位置,保存在 mark数组中,求完所有子串后,对mark数组按 结束位置排序,然后 用后一个的结束位置 减去 前一个的 开始 位置 再 减 ...
- .NET Core R2
.NET Core R2安装及示例教程 前言 前几天.NET Core发布了.NET Core 1.0.1 R2 预览版,之前想着有时间尝试下.NET Core.由于各种原因,就没有初试.刚好,前 ...