Laravel自定义拓展包开发教程 Laravel 5.* 如何开发自定义拓展包

1、安装Laravel

已安装Laravel的略过本步骤,未安装的参考Laravel安装文档:Laravel 5.1安装及配置

2、创建目录和服务提供者

在根目录下创建文件夹 packages/Getui/contact/src

服务提供者

进入src目录并创建一个服务提供者ContactServiceprovider.php:

<?phpnamespace Getui\Contact;use Illuminate\Support\ServiceProvider;use Illuminate\Routing\Router;class ContactServiceprovider extends ServiceProvider{    /**
     * Indicates if loading of the provider is deferred.
     *
     * @var bool
     */
    protected $defer = false;    public function boot()
    {        $this->loadViewsFrom(realpath(__DIR__.'/../views'), 'contact');        $this->setupRoutes($this->app->router);        // this for conig
        $this->publishes([            __DIR__.'/config/contact.php' => config_path('contact.php'),
        ]);
    }    /**
     * Define the routes for the application.
     *
     * @param \Illuminate\Routing\Router $router
     * @return void
     */
    public function setupRoutes(Router $router)
    {        $router->group(['namespace' => 'Getui\Contact\Http\Controllers'], function($router)
        {            require __DIR__.'/Http/routes.php';
        });
    }    public function register()
    {        $this->registerContact();
        config([            'config/contact.php',
        ]);
    }    private function registerContact()
    {        $this->app->bind('contact',function($app){            return new Contact($app);
        });
    }
}
创建路由:

在src目录下新建一个Http目录并在其中创建一个routes.php:

<?phpRoute::get('contact', 'ContactController@index');
创建控制器:

在Http目录下新建Controllers目录并在其中创建控制器ContactController.php:

<?phpnamespace Getui\Contact\Http\Controllers;use App\Http\Controllers\Controller;use Illuminate\Support\Facades\Config;class ContactController extends Controller{    /**
     * Show the application welcome screen to the user.
     *
     * @return Response
     */
    public function index()
    {
        dd(Config::get(contact.message));        return view('contact::contact');
    }
}
创建配置文件:

在src目录下新建config目录并在其中创建配置文件contact.php:

<?php
    return [        message => Welcome to your new package
    ];
创建视图文件:

在packages/Getui/contact目录下创建views文件夹,并在其中创建视图文件template.blade.php:

<html>
    <head>
        <meta charset=UTF-8>
        <title>title</title>
    </head>
    <body>
        @yield('content')
    </body>
</html>

和视图文件contact.blade.php:

@extends('contact::template')
@section('content')
Laravel Academy
@stop

最终生成的目录结构如下:

Laravel 5.1中进行自定义包开发的例子-laravel5 扩展包开发

3、添加包路径到composer.json

在根目录下修改composer.json,将Getui\\Contact\\: packages/Getui/contact/src/添加到psr-4:

psr-4: {    App\\: app/,    Getui\\Contact\\: packages/Getui/contact/src/}

4、注册服务提供者

在Laravel应用根目录下修改config/app.php,将服务提供者追加到providers数组:

Getui\Contact\ContactServiceProvider::class

5、加载包并发布资源

完成上述操作之后还要在命令行执行两个命令,首先在应用根目录下运行

composer dump-autoload

来更新Composer的autoloader,然后运行

php artisan vendor:publish

将自定义包的配置文件发布到应用根目录的config目录下以便可以访问。

6、在浏览器中测试

完成上述操作后即可在浏览器中访问http://laravel.app:8000/contact,页面输出如下:

Welcome to your new package

修改ContactController.php的代码如下:

//dd(Config::get(contact.message));return view('contact::contact');

则页面输出为:

Laravel Academy

至此,表明我们的自定义包开发完成并通过测试。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


laravel的dd函数不生效怎么办
看不懂laravel文档咋办
安装laravel框架出现command怎么办
Laravel开发API怎么使用事务
laravel怎么构建复杂查询条件
laravel如何实现防止被下载
为什么laravel比yii火
一些常见的Laravel定时任务不运行的问题
laravel用路由有什么好处
composer无法安装laravel怎么办
laravel现在还用吗
laravel怎么替换主键id
laravel的appurl有什么用
如何修改Laravel的报错输出形式
laravel怎么避免foreach查表
laravel怎样操作数据库
laravel怎么截取字符串
laravel 是国内的吗
laravel怎么设置请求头
浅析Laravel社区Redis组件报错的问题和解决方法