dillingham / formation

Laravel search, sort, and filters
MIT License
0 stars 0 forks source link

Add controller method #22

Closed dillingham closed 2 years ago

dillingham commented 2 years ago
public function controller($setup)
{
    $setup->policy(Product::class);
    $setup->request(ProductRequest::class);
    $setup->create(CreateProductRequest::class);
    $setup->update(UpdateProductRequest::class);
    $setup->request()->create(CreateProductRequest::class);
    $setup->request()->update(UpdateProductRequest::class);
    $setup->resource(ProductResource::class);
    $setup->routeNamePrefix('admin.product');
    $setup->viewsFolder('Product');
    $setup->views()->folder('Product');
    $setup->request()->middleware('can:view,brand');

maybe all that can be intelligently guessed

if class_exists  App\Http\Requests\Create{Name}Request::class
if class_exists  App\Http\Requests\Update{Name}Request::class
if class_exists  App\Http\Requests\{Name}Request::class

request get route name prefix might be the hard  thing
public function controller($setup)
{
    $setup->controller(CustomController::class);
}
public $controller = CustomController::class;

and on the base class

public $controller = ResourceController::class;
Route::formation('products', \App\Formations\ProductFormation::class);

public $enableOptions = true;
Route::get('products', [ProductController::class, 'index'])->name('products.index');
Route::get('products/new', [ProductController::class, 'create'])->name('products.create');
Route::post('products/new', [ProductController::class, 'store'])->name('products.store');
Route::get('products/{product}', [ProductController::class, 'show'])->name('products.show')->withTrashed();
Route::get('products/{product}/edit', [ProductController::class, 'edit'])->name('products.edit');
Route::put('products/{product}/edit', [ProductController::class, 'update'])->name('products.update');
Route::delete('products/{product}', [ProductController::class, 'destroy'])->name('products.destroy');
Route::post('products/{product}/restore', [ProductController::class, 'restore'])->name('products.restore')->withTrashed();
Route::delete('products/{product}/force-delete', [ProductController::class, 'forceDelete'])->name('products.force-delete')->withTrashed();
dillingham commented 2 years ago

Nested relationships

Route::formation('products', ProductFormation::class);
Route::formation('product-lines', ProductLineFormation::class);
Route::formation('product-lines.products', ProductFormation::class);

<?php

namespace Dillingham\Formations\Controllers;

class NestedController extends Controller
{
    public function __construct()
    {
        $this->middleware('can:view,App\Models\ProductLine');
        $this->authorizeResource(Product::class);
    }

    public function index(ProductLine $productLine, ProductFormation $request)
    {
        $request->where('product_line_id', $productLine->id);

        return $this->formation()->resource::collection(
            $request->results()
        );
    }
}