Download the PHP package luthfi/simple-crud-generator without Composer
On this page you can find all versions of the php package luthfi/simple-crud-generator. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download luthfi/simple-crud-generator
More information about luthfi/simple-crud-generator
Files in luthfi/simple-crud-generator
Package simple-crud-generator
Short Description A simple CRUD generator for Laravel 5.5 (and later) with Bootstrap 5.
License MIT
Informations about the package simple-crud-generator
Laravel Simple CRUD Generator
Need faster TDD in Laravel project? This is a simple CRUD generator complete with automated testing suite.
Documentation
For installation instructions and usage, please take a look at the official documentation.
About this package
This package contains artisan make:crud commands to create a simple CRUD feature with test classes on our Laravel 5.5 (and later) application. This package is fairly simple, to boost test-driven development method on our laravel application. It now supports Laravel 12 and 13.
With this package installed on local environment, we can use (e.g.) php artisan make:crud Vehicle command to generate some files :
App\Models\Vehicle.phpeloquent modelxxx_create_vehicles_table.phpmigration fileVehicleController.phpindex.blade.phpandforms.blade.phpview file inresources/views/vehiclesdirectoryresources/lang/vehicle.phplang fileVehicleFactory.phpmodel factory fileVehiclePolicy.phpmodel policy file inapp/PoliciesdirectoryManageVehiclesTest.phpfeature test class intests/FeaturedirectoryVehicleTest.phpunit test class intests/Unit/ModelsdirectoryVehiclePolicyTest.phpunit test class intests/Unit/Policiesdirectory
It will update some file :
- Update
routes/web.phpto addvehiclesresource route - Update
app/providers/AuthServiceProvider.phpto add Vehicle model Policy class in$policiesproperty
It will also create this file if it not exists :
resources/lang/app.phplang file if it not existstests/BrowserKitTest.phpbase Feature TestCase class if it not exists
Main purpose
The main purpose of this package is for faster Test-driven Development, it generates model CRUD scaffolds complete with Testing Classes which will use Laravel Browserkit Testing package and PHPUnit.
How to install
For Laravel 10x and later
For Laravel 9.x
For Laravel 8.x
For Laravel 5.6 to 7.x
For Laravel 5.5
To use this package on laravel 5.5, we need to add the package (with browserkit) within require-dev in composer.json file, like so :
The package will auto-discovered.
How to use
Just type in terminal $ php artisan make:crud ModelName command, it will create simple Laravel CRUD files of given model name completed with tests.
For example we want to create CRUD for 'App\Models\Vehicle' model.
Make sure we have set database credential on .env file, then :
Then visit our application url: http://localhost:8000/vehicles.
Usage on Fresh Install Laravel 8.x
In this example, we are using the laravel installer package to install new laravel project.
Available Commands
Model Attribute/column
The Model and table will only have 2 pre-definded attributes or columns : title and description on each generated model and database table. You can continue working on other column on the table.
Bootstrap 4 Views
The generated view files use Bootstrap 4 by default (for Laravel 5.6 and later).
Bootstrap 3 Views
We can also generates views that use Bootstrap 3 with --bs3 command option, eg for Laravel version 5.5.
For API
If we want to generate API Controller with feature tests, we use following command :
By default, we use Laravel Token Based Authentication, so we need to update our user model.
- Add
api_tokencolumn on our users_table_migration. - Add
api_tokenas fillable property on User model. - Add
api_tokenfield on our UserFactory.
API Usage
The generated API is a REST API, using GET and POST verbs, with a URI of /api/modelname.
Example code for calling the generated API, using Guzzle:
// Read data a specific Vehicle record...
$uri = 'http://your-domain.com/api/vehicles/'.$vehicleID;
$headers = ['Authorization' => 'Bearer '.$apiToken];
$client = new \GuzzleHttp\Client();
$res = $client->request('GET', $uri, ['headers' => $headers]);
// Create a new Vehicle record...
$uri = 'http://your-domain.com/api/vehicles';
$headers = ['Authorization' => 'Bearer '.$apiToken];
$payload = json_encode([
'title' => 'Vehicle Name 1',
'description' => 'Vehicle Description 1',
]);
$client = new \GuzzleHttp\Client();
$res = $client->request('POST', $uri, ['body' => $payload, 'headers' => $headers]);
The generated functional tests will give you examples of how to adapt this code for other call types.
Config file
You can configure your own by publishing the config file:
That will generate config/simple-crud.php file.
By default, this package have some configuration:
Publishing Stub Files
Stub files is the templates which we use to generate the code for each model classes and files. We can customize the stub files as we needed by publishing them to our project directory.
That will generate stub files on stubs/simple-crud directory. Now we can change some stub files based on our project needs.
Attention
- The package will creates the Model class file, the command will stop if the Model already exists.
- You need a
resources/views/layouts/app.blade.phpview file, simply create one withphp artisan make:authcommand. You can change this configuration via theconfig/simple-crud.phpfile.
The --parent-model Command Option
We have --parent-model option to create a CRUD feature nested with existing model.
I often creating a CRUD feature nested with the existing model, like:
- Adding payment history entries for an invoice
- Adding work orders under a project
- Adding attachments under document
- Many more
Since this package was (only) for creating the "first-class citizen" CRUD feature, we need to create the nested CRUD feature manually. The command --parent-model option can save our time more.
Example
When one department has many section, then we are adding a nested controller like so:
So we will have routes like:
Including the model, controller, views, feature test, unit tests.
To create the CRUD feature, we can run:
We will have a working Section CRUD feature with title and description attribute under Departments namespace, completed with tests. (Where Department is the existing model and Section is the new model.)
Screenshots
Visit your application in new resource route : http://127.0.0.1:8000/vehicles
Generated testing suite
Next, let us try the generated testing suite. To use the generated testing classes, we can set the database environment using in-memory database SQLite. Open phpunit.xml. Add two lines below on the env :
Then run PHPUnit
All tests should be passed.
Issue/Proposal
If you find any issue, or want to propose some idea to help this package better, please create an issue in this github repo.
License
This package is open-sourced software licensed under the MIT license.
All versions of simple-crud-generator with dependencies
illuminate/support Version ^10.0|^11.0|^12.0|^13.0
laravel/browser-kit-testing Version ^7.0