Laravel自定义拓展包开发教程 Laravel 5.* 如何开发自定义拓展包
1、安装Laravel已安装Laravel的略过本步骤,未安装的参考Laravel安装文档:Laravel 5.1安装及配置 2、创建目录和服务提供者在根目录下创建文件夹 packages/Getui/contact/src 服务提供者进入src目录并创建一个服务提供者ContactServiceprovider.php: <?phpnamespace GetuiContact;use IlluminateSupportServiceProvider;use IlluminateRoutingRouter;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 IlluminateRoutingRouter $router * @return void */ public function setupRoutes(Router $router) { $router->group(['namespace' => 'GetuiContactHttpControllers'], 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 GetuiContactHttpControllers;use AppHttpControllersController;use IlluminateSupportFacadesConfig;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,将"GetuiContact": "packages/Getui/contact/src/"添加到psr-4: "psr-4": { "App": "app/", "GetuiContact": "packages/Getui/contact/src/"} 4、注册服务提供者在Laravel应用根目录下修改config/app.php,将服务提供者追加到providers数组: GetuiContactContactServiceProvider::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 至此,表明我们的自定义包开发完成并通过测试。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |