https://github.com/bpocallaghan/generators
Laravel File Generators with config and publishable stubs
https://github.com/bpocallaghan/generators
artisan class commands database-seeder file generate hacktoberfest laravel make php pivot-tables publishable-stubs stubs
Last synced: about 1 month ago
JSON representation
Laravel File Generators with config and publishable stubs
- Host: GitHub
- URL: https://github.com/bpocallaghan/generators
- Owner: bpocallaghan
- License: mit
- Created: 2015-04-07T04:39:27.000Z (over 10 years ago)
- Default Branch: master
- Last Pushed: 2024-04-15T13:39:06.000Z (over 1 year ago)
- Last Synced: 2025-08-11T21:53:45.993Z (2 months ago)
- Topics: artisan, class, commands, database-seeder, file, generate, hacktoberfest, laravel, make, php, pivot-tables, publishable-stubs, stubs
- Language: PHP
- Homepage:
- Size: 293 KB
- Stars: 119
- Watchers: 5
- Forks: 18
- Open Issues: 2
-
Metadata Files:
- Readme: readme.md
- Funding: .github/FUNDING.yml
- License: LICENSE
Awesome Lists containing this project
README
# Laravel File Generators
Custom Laravel File Generators with a config file and publishable stubs.
You can publish the stubs. You can add your own stubs to generate.This package is being used in [Admin Starter Project](https://github.com/bpocallaghan/titan-starter) that focuses on test driven development and has the foundation ready for you.
```
Laravel 5.1 : v2.1.3
Laravel 5.2 - 5.3 : v3.0.3
Laravel 5.4 : v4.1.9
Laravel 5.5 - 5.8 : v5.0.0+
Laravel 6.0 : v5.1.0+
Laravel 7.0 : v6.x
Laravel 8.0 : v7.x
Laravel 9.0 : v8.x
Laravel 10.0 : v9.x
```## Commands
```bash
php artisan generate:publish-stubs
php artisan generate:model
php artisan generate:view
php artisan generate:controller
php artisan generate:migration
php artisan generate:migration:pivot
php artisan generate:seed
php artisan generate:resource
php artisan generate:repository
php artisan generate:contract
php artisan generate:notification
php artisan generate:event
php artisan generate:listener
php artisan generate:event-listener
php artisan generate:trait
php artisan generate:job
php artisan generate:console
php artisan generate:middleware
php artisan generate:factory
php artisan generate:test
php artisan generate:file
php artisan generate:exception
php artisan generate:component
php artisan generate:livewire
```### Option for all the commands
- `--force` This will override the existing file, if it exists.
- `--test` This will also generate a test file.### Option for all the commands, except `views` and `migration:pivot`
- `--plain` This will use the .plain stub of the command (generate an empty controller)### Customization
This is for all except the `migration` and `migration:pivot` commands```
php artisan generate:file foo.bar --type=controller
php artisan generate:view foo.bar --stub=view_show --name=baz_show
php artisan generate:file foo.bar --type=controller --stub=controller_custom --name=BazzzController --plain --force
```You can specify a custom name of the file to be generated.
You can add the --plain or --force options.
You can override the default stub to be used.
You can create your own stubs with the available placeholders.
You can create new settings' types, for example:
- 'exception' => ['namespace' => '\Exceptions', 'path' => './app/Exceptions/', 'postfix' => 'Exception'],[Available placeholders](https://github.com/bpocallaghan/generators/blob/master/resources/stubs/example.stub)
## Views Custom Stubs
```
php artisan generate:view posts
php artisan generate:view admin.posts --stub=custom
php artisan generate:view admin.posts --stub=another_file
```## Installation
Update your project's `composer.json` file.
```
composer require bpocallaghan/generators --dev
```Add the Service Provider (Laravel 5.5+ has automatic discovery of packages)
You'll only want to use these generators for local development, add the provider in `app/Providers/AppServiceProvider.php`:```php
public function register()
{
if ($this->app->environment() == 'local') {
$this->app->register(\Bpocallaghan\Generators\GeneratorsServiceProvider::class);
}
}
```Run `php artisan` command to see the new commands in the `generate:*` section
## Usage
- [Models](#models)
- [Views](#views)
- [Controllers](#controllers)
- [Migrations](#migrations)
- [Pivot Tables](#pivot-tables)
- [Database Seeders](#database-seeders)
- [Resource](#resource)
- [Repository](#repository)
- [Contract](#contract)
- [Notifications](#notifications)
- [Events and Listeners](#events-and-listeners)
- [Trait](#trait)
- [Job](#job)
- [Console](#console)
- [Middleware](#middleware)
- [Factory](#factory)
- [Test](#test)
- [File](#file)
- [Configuration](#configuration)### Models
```
php artisan generate:model bar
php artisan generate:model foo.bar --plain
php artisan generate:model bar --force
php artisan generate:model bar --factory
php artisan generate:model bar --migration
php artisan generate:model bar --migration --schema="title:string, body:text"
```### Views
```
php artisan generate:view foo
php artisan generate:view foo.bar
php artisan generate:view foo.bar --stub=view_show
php artisan generate:view foo.bar --name=foo_bar
```### Controllers
```
php artisan generate:controller foo
php artisan generate:controller foo.bar
php artisan generate:controller fooBar
php artisan generate:controller bar --plain
php artisan generate:controller BarController --plain
```- The `Controller` postfix will be added if needed.
### Migrations
This is very similar as [Jeffrey Way's](https://github.com/laracasts/Laravel-5-Generators-Extended)
```
php artisan generate:migration create_users_table
php artisan generate:migration create_users_table --plain
php artisan generate:migration create_users_table --force
php artisan generate:migration create_posts_table --schema="title:string, body:text, slug:string:unique, published_at:date"
```### Pivot Tables
This is very similar as [Jeffrey Way's](https://github.com/laracasts/Laravel-5-Generators-Extended)
```
php artisan generate:migration:pivot tags posts
```### Database Seeders
```
php artisan generate:seed bar
php artisan generate:seed BarTableSeeder
```- The `TableSeeder` suffix will be added if needed.
### Resource
```
php artisan generate:resource bar
php artisan generate:resource foo.bar
php artisan generate:resource foo.bar_baz
php artisan generate:resource bar --schema="title:string, body:text, slug:string:unique, published_at:date"
php artisan generate:resource articles --controller=admin
```- This will generate a Bar model, BarsController, resources views (in config), create_bars_table migration, BarTableSeeder
- In the config there is a `resource_views` array, you can specify the views that you want to generate there, just make sure the stub exist.
- This will also ask you to generate the 'repository - contract pattern' files.
- The `--controller=admin` allows you to use the controller_admin stub when generating the controller.### Repository
```
php artisan generate:repository Posts
```
This will generate a Posts Repository file to be used in your controller.### Contract
```
php artisan generate:contract Cache
```
This will generate a Cache Contract file to be used with your repositories.### Notifications
```
php artisan generate:notification UserRegistered
```This will generate a UserRegistered notification.
Laravel provides support for sending notifications across a variety of delivery channels, including mail, SMS (via Nexmo), and Slack. Notifications may also be stored in a database so they may be displayed in your web interface.### Events and Listeners
```
php artisan generate:event InvoiceWasPaid
php artisan generate:listener NotifyUserAboutPayment --event=InvoiceWasPaid
php artisan generate:event-listener
```
This will generate the event and listener.
Laravel's events provides a simple observer implementation, allowing you to subscribe and listen for various events that occur in your application`php artisan generate:event-listener `
Will generate all the missing events and listeners defined in your EventServiceProvider.### Trait
```
php artisan generate:trait Http\Controllers\Traits\Bar
```
This will generate a FooBar Trait file. The command will use the name as your namespace.
`generate:trait Foo` will create a file in `app/Foo.php`, `generate:trait Foo\Bar` will create a file in `app/Foo/Bar.php`.### Job
```
php artisan generate:job SendReminderEmail
```
This will generate a SendReminderEmail Job file.### Console (Artisan Command)
```
php artisan generate:console SendEmails
php artisan generate:console SendEmails --command=send:emails
```
This will generate a SendEmails Artisan Command file. The --command option is optional.### Middleware
```
php artisan generate:middleware AuthenticateAdmin
```
This will generate an AuthenticateAdmin Middleware file.### Factory
```
php artisan generate:factory Post
php artisan generate:factory PostFactory
```
This will generate a PostFactory model file.### Test
```
php artisan generate:test UserCanLogin
php artisan generate:test Post --unit
php artisan generate:test Auth\LoginTest
```
This will generate Feature\UserCanLogin and Unit\PostTest and Unit\Auth\LoginTest files.### Component
```
php artisan generate:component Foo
php artisan generate:component Foo/Bar
php artisan generate:component Baz --test
```
This will generate a Laravel Component. The php and blade files will be generated.
You can also specify to generate a unit test.### Livewire
```
php artisan generate:livewire Foo
php artisan generate:livewire Foo/Bar
php artisan generate:livewire Baz --test
php artisan generate:livewire foo-bar --request
```
This will generate a Livewire component. The php and blade files will be generated.
You can also specify to generate a test or a form request.### Configuration
```
php artisan generate:publish-stubs
```This will copy the config file to `/config/generators.php`.
Here you can change the defaults for the settings of each `type`, like model, view, controller, seed.
You can also change the namespace, path where to create the file, the pre/post fix, and more.
You can also add new stubs.This will also copy all the stubs to `/resources/stubs/`.
Here you can make changes to the current stubs, add your own boilerplate / comments to the files.
You can also add your own stubs here and specify it in the config to be used.
**Migration Stub Note**: The `migration.stub` is only the outer part and the `schema_create.stub or schema_change.stub` is where you modify the schema itself. The `schema_create.stub` has boilerplate added to it.### File
This is the base command for the view, model, controller, seed commands.
The migration and migration:pivot uses Jeffrey's classes.
In the config there is a `settings` array, this is the 'types' and their settings. You can add more, for example, if you use repositories, you can add it here.```
php artisan generate:file foo.bar --type=view
php artisan generate:file foo.bar --type=controller
php artisan generate:file foo.bar --type=model
php artisan generate:file foo.bar --type=model --stub=model_custom
```## Customizing file was created message to add support for ide opening the files
Make links for opening output.
Add output_path_handler as a function to your config/generators.php.Example:```
'output_path_handler' => static function($path){
return 'file:///' . base_path() . $path;
},
```
This will output a file schema uri which JetBrain Products (Intellij,Php Storm,Web Storm,...) then can open directly from your terminal.## Thank you
- Thank you, [Taylor Ottwell](https://github.com/taylorotwell) for [Laravel](http://laravel.com/).
- Thank you, [Jeffrey Way](https://github.com/JeffreyWay) for the awesome resources at [Laracasts](https://laracasts.com/).## My Other Packages
- [Alert](https://github.com/bpocallaghan/alert) A helper package to flash a bootstrap alert to the browser via a Facade or a helper function.
- [Notify](https://github.com/bpocallaghan/notify) Laravel Flash Notifications with icons and animations and with a timeout
- [Impersonate User](https://github.com/bpocallaghan/impersonate) This allows you to authenticate as any of your customers.
- [Sluggable](https://github.com/bpocallaghan/sluggable) Provides a HasSlug trait that will generate a unique slug when saving your Laravel Eloquent model.