• laravel扩展包开发步骤总结


    1. 创建包
    1
    php artisan workbench vendor/package --resources
        注:  vendor:开发商名   package:包名
     
    2.修改下包里composer.json中的authors
     
    1
    2
    3
    4
    5
    6
    "authors": [
        {
            "name""cicl",
            "email""test@126.com"
        }
    ]
    3. 为创建的包注册ServiceProvider
    在项目根目录执行 php artisan dump-autoload
    在app/config/app.php文件里的provides数组中添加该包,将VendorPackagePackageServiceProvider添加到providers数组.
    为了方便我们的使用,我们在app/config/app.php的aliases中增加一个别名: 'Package' => 'VendorPackageFacadesNotification',
    启动开发服务器: php artisan serve ,如果成功启动,如显示:Laravel development server started on http://localhost:8000,则扩展包的基础搭建就成功了。
           基本的扩展包结构:
            /src
                /Vendor
                    /Package
                        PackageServiceProvider.php
                /config
                /lang
                /migrations
                /views
            /tests
            /public

    4、为本包添加独立路由文件,只需在PackageServiceProvider中的boot函数中添加如下代码,并在包的根目录创建routes.php文件

    1
    2
    3
    4
    public function boot(){   
        $this->package('vendor/package');   
        include __DIR__.'/../../routes.php';
    }

    路由文件如下所示: 

    1
    Route::get('test',  function(){    return "this is test";});
    现在,在浏览器里输入地址如:http://localhost:8000/test,就会输出“this is test”。
     
    5.接下来尝试使用Controller
        新建路由如下: 
    1
    Route::get('testtwo',array('as' => 'testtwo','uses' => 'VendorPackageControllersPackageController@getTest'));
    6、在controllers 中新建RegistrationController.php文件,代码如下:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <?php
    namespace CclLenonControllers;
    use IlluminateRoutingController;
    use IlluminateSupportFacadesView;
     
    Class LenonController extends Controller {
         public function getTest() {
             return "控制器测试";
         }
    }
     
    尝试打开页面,提示找不到控制器,Laravel默认是不自动查找任何目录的,需要开发者自己指定文件的存放目录,不过它也给出了建议路径,比如在使用artisan workbench的时候是不是生成了src/controllers目录呢,Ok,我们添加自动加载路径即可。
    7、在包的根目录的composer.json的autoload下classmap字段增加"src/controllers",如:
    1
    2
    3
    4
    "classmap": [
           "src/migrations",
           "src/controllers"
    ],
    并在项目根目录运行 php artisan dump-autoload,刷新页面就好了。

    8、接下来我们要使用views文件!按照我们理解我们只需要修改controller中代码,如下: 

    1
    2
    3
    4
    public function getRegister()   
        return View::make('test');
    }
    在包src/views/ 下创建 test.blade.php文件,并在文件中写入相关页面代码,例: <h1>这是测试视图的文件</h1>
    刷新页面,发现并没有成功,在Laravel中,是不会自动索引包中的视图文件的,所以我们还需要做一点点工作!

    9、在载入视图的时候指定他去包中寻找视图文件即可,修改controller中代码如下:

    1
    2
    3
    4
    public function getRegister()   
    {
        return View::make('package::test');   
    }

    再次刷新页面,我们期待的页面出现了,

     
    public迁移     
    1
    php artisan asset:publish --bench="vendor/package"
     
    创建数据库迁移
    1
    php artisan migrate:make create_users_table --bench="vendor/package"

    执行数据库迁移

    1
    php artisan migrate --bench="vendor/package"
  • 相关阅读:
    【疑难系列】 是程序卡住了还是怎么了?
    【疑难系列】 一个看起来是数据库死锁的问题
    求求别再这么用log4x了
    如何动态在spring mvc中增加bean
    java中被各种XXUtil/XXUtils辅助类恶心到了,推荐这种命名方法
    少搞点语法糖,多写点功能
    记一次在java中的日期parse错误
    《自控力》读后感·一
    实现数据权限控制的一种方法
    10个必会的 PyCharm 技巧
  • 原文地址:https://www.cnblogs.com/bainiu/p/7681176.html
Copyright © 2020-2023  润新知