Kerangka Generator untuk Laravel yang dibangun di atas Laravel.
Di Laravel 5.5:
composer require exfriend/laravel-recipeUntuk menghasilkan entitas apa pun, Anda pada dasarnya membutuhkan dua hal: templat dan data aktual.
Resep menggunakan bilah Laravel sebagai mesin templat untuk bertopik, sehingga penggunaan dasarnya sangat mirip dengan cara Anda mengembalikan tampilan dari pengontrol.
Mari kita tulis resep pertama kita yang akan menghasilkan kelas apa pun.
resources/views/recipe :Sumber Daya/Tampilan/Resep/Class.Blade.php
{!! ' < ' . ' ?php ' ! !}
@unless ( empty ( $namespace ) )
namespace {{ $namespace } } ;
@endunless
@unless ( empty ( $imports ) )
@foreach ( $imports as $import )
import {{ $import } } ;
@endforeach
@endunless
class {{ $class } } {{ isset ( $extends ) ? ' extends ' . $extends : ' ' } } {{ ! empty ( $implements ) ? ' implements ' . collect ( $implements ) -> implode ( ' , ' ) : ' ' } }
{
@unless ( empty ( $traits ) )
use {{ collect ( $traits ) -> implode ( ' , ' ) } } ;
@endunless
@isset ( $content )
{!! $content ! !}
@endisset
}
Kemudian di mana saja dalam kode Anda yang dapat Anda jalankan:
$recipe = recipe()->usingView( 'recipes.class' )->with( [
'namespace' => 'App',
'class' => 'User',
'extends' => 'Authenticatable',
'imports' => [
'IlluminateFoundationAuthUser as Authenticatable',
'IlluminateNotificationsNotifiable',
'LaravelPassportHasApiTokens',
],
'traits' => [
'HasApiTokens',
'Notifiable',
],
// 'implements' => [ 'SomeInterface', 'OtherInterface' ],
] );
Dapatkan kode yang dikompilasi:
dd ( $ recipe -> build () )Simpan ke File:
$ recipe -> build ( app_path ( ' User.php ' ) );Sekarang mari kita buat kelas khusus untuk resep ini agar lebih mudah.
Aplikasi/Resep/ClassRecipe.php
<?php
namespace App Recipes ;
class ClassRecipe extends Exfriend Recipe Recipe
{
public $ props = [
' class ' => [
' rules ' => ' required ' ,
],
' content ' => [ ' default ' => '' , ],
' imports ' => [ ' default ' => [], ],
];
protected $ view_name = ' recipes.class ' ;
}
Di sini Anda dapat melihat bahwa kami menggunakan nama templat dan mendefinisikan variabel $props baru yang agak mirip dengan apa yang digunakan Vue dalam komponennya.
Dua hal penting terjadi di sini:
Pertama, kami menambahkan beberapa resep jitu validasi bahwa properti class wajib dalam resep ini. Anda dapat mengatur properti aturan seperti biasanya di aplikasi Laravel Anda - itu hal yang sama.
Kedua, kami menetapkan nilai default untuk content dan import . Default tersebut akan diterapkan jika pengguna tidak memberikan apa pun sebagai input.
Jadi, penggunaan kami yang dihasilkan sekarang akan terlihat seperti ini:
$ recipe = ( App Recipes ClassRecipe::class )-> with ( [
' namespace ' => ' App ' ,
' class ' => ' User ' ,
' extends ' => ' IlluminateFoundationAuthUser ' ,
] )
-> build ( app_path ( ' User.php ' ) );Catatan penting:
Karena alat peraga, data aktual yang diteruskan ke templat akan sedikit berbeda dari apa yang kami lewati. Misalnya, itu akan memiliki content dan imports . Terkadang Anda hanya ingin mendapatkan data yang ditransformasikan dengan kami menyusun seluruh templat (misalnya untuk resep bersarang, lihat di bawah). Untuk hanya mendapatkan data yang dikompilasi, jalankan:
$ recipe = ( App Recipes ClassRecipe::class )-> with ( [
...
] )
-> buildData ();Karena kami menghasilkan model di sini dan model adalah sesuatu yang ingin sering kami hasilkan, masuk akal untuk membuat resep model khusus berdasarkan resep kelas umum yang sudah kami miliki. Mari Buat Resep Model Sederhana:
App/Resep/ModelRecipe.php
Segera hadir.