代码之家  ›  专栏  ›  技术社区  ›  DarkFenix

如何避免重复的内容文件在Laravel中创建命令时放置内容

  •  0
  • DarkFenix  · 技术社区  · 7 年前

    我正在Laravel中创建一个命令,在该命令中,我将视图正确地复制到“视图”文件夹中,但碰巧我想添加一些路由,并按以下方式执行

    file_put_contents(
           base_path('routes/web.php'),
           file_get_contents(__DIR__.'/stubs/make/routes.stub'),
           FILE_APPEND
    );
    

    我正确地添加了路由,但每次使用命令php artisan make:micommand时都会这样做,有没有办法评估如果已经存在的路由不添加它们?

    使用Laravel 5.6.*

    2 回复  |  直到 7 年前
        1
  •  1
  •   Namoshek    7 年前

    我认为没有内置的方法来检查这个问题。但我的一个想法是在 routes/web.php (例如,作为存根的一部分),以后您可以查看。

    stubs/make/routes.stub :

    // my.pkg.routes.web
    Route::group([], function () {
        Route::resource('something');
    });
    

    命令:

    $routes = file_get_contents(base_path('routes/web.php'));
    if(strpos($routes, '\/\/ my.pkg.routes.web') === false) {
        file_put_contents(
            base_path('routes/web.php'),
            file_get_contents(__DIR__.'/stubs/make/routes.stub'),
            FILE_APPEND
        );
    }
    

    您还可以在命令类中将注释设置为常量,并从中附加它(可能更有意义)。

        2
  •  0
  •   Jorge Rodríguez    7 年前

    您可以为其中一个路由分配一个名称,并在命令期间通过 Route::has 方法。

    指定名称:

    Route::get('test', function () {
        dd('Testing route');
    })->name('test');
    

    检查命令中的路由:

    if (!Route::has('test')) {
        <append your routes via stub>
    })
    
    推荐文章