Created FilamentController & Filament Model + Views
This commit is contained in:
@@ -3,6 +3,10 @@
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use Illuminate\Http\Request;
|
||||
use App\Models\Filament;
|
||||
use App\Models\Color;
|
||||
use App\Models\FilamentType;
|
||||
use App\Models\Manufacturer;
|
||||
|
||||
class FilamentController extends Controller
|
||||
{
|
||||
@@ -11,7 +15,10 @@ class FilamentController extends Controller
|
||||
*/
|
||||
public function index()
|
||||
{
|
||||
//
|
||||
// show all filaments
|
||||
$filaments = Filament::all();
|
||||
$manufacturers = Manufacturer::all();
|
||||
return view('filaments.index', ['filaments' => $filaments, 'manufacturers' => $manufacturers]);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -19,7 +26,11 @@ class FilamentController extends Controller
|
||||
*/
|
||||
public function create()
|
||||
{
|
||||
//
|
||||
// create a new filament
|
||||
$manufacturers = Manufacturer::all();
|
||||
$types = FilamentType::all();
|
||||
$colors = Color::all();
|
||||
return view('filaments.create', compact('manufacturers', 'types', 'colors'));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -27,7 +38,30 @@ class FilamentController extends Controller
|
||||
*/
|
||||
public function store(Request $request)
|
||||
{
|
||||
//
|
||||
// store a new filament
|
||||
$request->validate([
|
||||
'name' => 'required|string|max:255',
|
||||
'description' => 'nullable|string',
|
||||
'color_id' => 'required|exists:colors,id',
|
||||
'type_id' => 'required|exists:filament_types,id',
|
||||
'manufacturer_id' => 'required|exists:manufacturers,id',
|
||||
'weight' => 'required|numeric',
|
||||
'price' => 'nullable|decimal:2',
|
||||
'diameter' => 'required|decimal:2'
|
||||
]);
|
||||
|
||||
$filament = new Filament();
|
||||
$filament->name = $request->name;
|
||||
$filament->description = $request->description;
|
||||
$filament->color_id = $request->color_id;
|
||||
$filament->type_id = $request->type_id;
|
||||
$filament->manufacturer_id = $request->manufacturer_id;
|
||||
$filament->weight = $request->weight;
|
||||
$filament->price = $request->price;
|
||||
$filament->diameter = $request->diameter;
|
||||
$filament->save();
|
||||
|
||||
return redirect()->route('filaments.index')->with('success', 'Filament created successfully.');
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -35,7 +69,12 @@ class FilamentController extends Controller
|
||||
*/
|
||||
public function show(string $id)
|
||||
{
|
||||
//
|
||||
// show a specific filament
|
||||
$filament = Filament::find($id);
|
||||
$manufacturer = Manufacturer::find($filament->manufacturer_id);
|
||||
$type = FilamentType::find($filament->type_id);
|
||||
$color = Color::find($filament->color_id);
|
||||
return view('filaments.show', compact('filament', 'manufacturer', 'type', 'color'));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -43,7 +82,12 @@ class FilamentController extends Controller
|
||||
*/
|
||||
public function edit(string $id)
|
||||
{
|
||||
//
|
||||
// edit a specific filament
|
||||
$filament = Filament::find($id);
|
||||
$manufacturers = Manufacturer::all();
|
||||
$types = FilamentType::all();
|
||||
$colors = Color::all();
|
||||
return view('filaments.edit', compact('filament', 'manufacturers', 'types', 'colors'));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -51,7 +95,30 @@ class FilamentController extends Controller
|
||||
*/
|
||||
public function update(Request $request, string $id)
|
||||
{
|
||||
//
|
||||
// update a specific filament
|
||||
$request->validate([
|
||||
'name' => 'required|string|max:255',
|
||||
'description' => 'nullable|string',
|
||||
'color_id' => 'required|exists:colors,id',
|
||||
'type_id' => 'required|exists:filament_types,id',
|
||||
'manufacturer_id' => 'required|exists:manufacturers,id',
|
||||
'weight' => 'required|numeric',
|
||||
'price' => 'nullable|decimal:2',
|
||||
'diameter' => 'required|decimal:2'
|
||||
]);
|
||||
|
||||
$filament = Filament::find($id);
|
||||
$filament->name = $request->name;
|
||||
$filament->description = $request->description;
|
||||
$filament->color_id = $request->color_id;
|
||||
$filament->type_id = $request->type_id;
|
||||
$filament->manufacturer_id = $request->manufacturer_id;
|
||||
$filament->weight = $request->weight;
|
||||
$filament->price = $request->price;
|
||||
$filament->diameter = $request->diameter;
|
||||
$filament->save();
|
||||
|
||||
return redirect()->route('filaments.show', $filament->id)->with('success', 'Filament updated successfully.');
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -59,6 +126,9 @@ class FilamentController extends Controller
|
||||
*/
|
||||
public function destroy(string $id)
|
||||
{
|
||||
//
|
||||
// delete a specific filament
|
||||
$filament = Filament::find($id);
|
||||
$filament->delete();
|
||||
return redirect()->route('filaments.index')->with('success', 'Filament deleted successfully.');
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,96 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use Illuminate\Http\Request;
|
||||
use App\Models\Manufacturer;
|
||||
|
||||
class ManufacturerController extends Controller
|
||||
{
|
||||
/**
|
||||
* Display a listing of the resource.
|
||||
*/
|
||||
public function index()
|
||||
{
|
||||
// show all manufacturers
|
||||
$manufacturers = Manufacturer::all();
|
||||
return view('manufacturers.index', compact('manufacturers'));
|
||||
}
|
||||
|
||||
/**
|
||||
* Show the form for creating a new resource.
|
||||
*/
|
||||
public function create()
|
||||
{
|
||||
// create a new manufacturer
|
||||
return view('manufacturers.create');
|
||||
}
|
||||
|
||||
/**
|
||||
* Store a newly created resource in storage.
|
||||
*/
|
||||
public function store(Request $request)
|
||||
{
|
||||
// store a new manufacturer
|
||||
$request->validate([
|
||||
'name' => 'required|string|max:255'
|
||||
]);
|
||||
|
||||
$manufacturer = new Manufacturer();
|
||||
$manufacturer->name = $request->name;
|
||||
$manufacturer->description = $request->description;
|
||||
$manufacturer->website = $request->website;
|
||||
$manufacturer->save();
|
||||
|
||||
return redirect()->route('manufacturers.index')->with('success', 'Manufacturer created successfully.');
|
||||
}
|
||||
|
||||
/**
|
||||
* Display the specified resource.
|
||||
*/
|
||||
public function show(string $id)
|
||||
{
|
||||
// show a specific manufacturer
|
||||
$manufacturer = Manufacturer::find($id);
|
||||
return view('manufacturers.show', compact('manufacturer'));
|
||||
}
|
||||
|
||||
/**
|
||||
* Show the form for editing the specified resource.
|
||||
*/
|
||||
public function edit(string $id)
|
||||
{
|
||||
// edit a specific manufacturer
|
||||
$manufacturer = Manufacturer::find($id);
|
||||
return view('manufacturers.edit', compact('manufacturer'));
|
||||
}
|
||||
|
||||
/**
|
||||
* Update the specified resource in storage.
|
||||
*/
|
||||
public function update(Request $request, string $id)
|
||||
{
|
||||
// update a specific manufacturer
|
||||
$request->validate([
|
||||
'name' => 'required|string|max:255'
|
||||
]);
|
||||
|
||||
$manufacturer = Manufacturer::find($id);
|
||||
$manufacturer->name = $request->name;
|
||||
$manufacturer->description = $request->description;
|
||||
$manufacturer->website = $request->website;
|
||||
$manufacturer->save();
|
||||
return redirect()->route('manufacturers.show', $manufacturer->id)->with('success', 'Manufacturer updated successfully.');
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove the specified resource from storage.
|
||||
*/
|
||||
public function destroy(string $id)
|
||||
{
|
||||
// delete a specific manufacturer
|
||||
$manufacturer = Manufacturer::find($id);
|
||||
$manufacturer->delete();
|
||||
return redirect()->route('manufacturers.index')->with('success', 'Manufacturer deleted successfully.');
|
||||
}
|
||||
}
|
||||
@@ -12,6 +12,7 @@ class Filament extends Model
|
||||
|
||||
protected $fillable = [
|
||||
'name',
|
||||
'description',
|
||||
'type_id',
|
||||
'manufacturer_id',
|
||||
'color_id',
|
||||
|
||||
@@ -18,7 +18,7 @@ return new class extends Migration
|
||||
$table->string('description')->nullable();
|
||||
$table->string('color_id')->required();
|
||||
$table->string('manufacturer_id')->required();
|
||||
$table->string('filament_type_id')->required();
|
||||
$table->string('type_id')->required();
|
||||
$table->string('weight')->required();
|
||||
$table->string('diameter')->required();
|
||||
$table->string('price')->nullable();
|
||||
|
||||
@@ -6,8 +6,8 @@
|
||||
|
||||
<flux:navbar class="-mb-px max-lg:hidden">
|
||||
<flux:navbar.item icon="home" href="{{ route('dashboard') }}">Dashboard</flux:navbar.item>
|
||||
<flux:navbar.item icon="archive-box" href="#">Manufacturers</flux:navbar.item>
|
||||
<flux:navbar.item icon="circle-stack" href="#">Filaments</flux:navbar.item>
|
||||
<flux:navbar.item icon="archive-box" href="{{ route('manufacturers.index') }}">Manufacturers</flux:navbar.item>
|
||||
<flux:navbar.item icon="circle-stack" href="{{ route('filaments.index') }}">Filaments</flux:navbar.item>
|
||||
<flux:navbar.item icon="chart-pie" href="{{ route('types.index') }}">Types</flux:navbar.item>
|
||||
<flux:navbar.item icon="swatch" href="{{ route('colors.index') }}">Colors</flux:navbar.item>
|
||||
</flux:navbar>
|
||||
|
||||
@@ -0,0 +1,80 @@
|
||||
<x-app-layout>
|
||||
<x-slot name="header">
|
||||
{{ __('Create Filaments') }}
|
||||
</x-slot>
|
||||
|
||||
<x-slot name="headeraction">
|
||||
<div class="flex gap-4 justify-end">
|
||||
<a href="{{ route('filaments.index') }}" class=" text-zinc-50 hover:text-zinc-300 font-bold text-base py-2 px-4 rounded cursor-pointer">Back</a>
|
||||
<a href="{{ route('filaments.store') }}" onclick="event.preventDefault(); document.getElementById('create-filament-form').submit();" class="bg-green-500 hover:bg-green-700 text-zinc-700 hover:text-white font-bold text-base py-2 px-4 rounded cursor-pointer">Submit</a>
|
||||
</div>
|
||||
</x-slot>
|
||||
|
||||
|
||||
<div class="py-12">
|
||||
<div class="max-w-7xl mx-auto sm:px-6 lg:px-8">
|
||||
<div class="bg-white dark:bg-zinc-700 p-4 overflow-hidden shadow-xl sm:rounded-lg">
|
||||
<form id="create-filament-form" class="flex flex-col gap-6" method="POST" action="{{ route('filaments.store') }}">
|
||||
@csrf
|
||||
<div class="form-group flex flex-col">
|
||||
<label for="name" class="text-lg ">Name</label>
|
||||
<input type="text" id="name" name="name" class="form-control bg-white dark:bg-zinc-800 border-zinc-50 dark:border-zinc-600 rounded" required="">
|
||||
</div>
|
||||
|
||||
<div class="form-group flex flex-col">
|
||||
<label for="description">Description</label>
|
||||
<textarea name="description" class="form-control bg-white dark:bg-zinc-800 border-zinc-50 dark:border-zinc-600 rounded"></textarea>
|
||||
</div>
|
||||
|
||||
<div class="form-group flex flex-col">
|
||||
<label for="manufacturer_id">Manufacturer</label>
|
||||
<select name="manufacturer_id" id="manufacturer_id" class="form-control bg-white dark:bg-zinc-800 border-zinc-50 dark:border-zinc-600 rounded" required="">
|
||||
@foreach ($manufacturers as $manufacturer)
|
||||
<option value="{{ $manufacturer->id }}">{{ $manufacturer->name }}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<div class="form-group flex flex-col">
|
||||
<label for="type_id">FilamentType</label>
|
||||
<select name="type_id" id="type_id" class="form-control bg-white dark:bg-zinc-800 border-zinc-50 dark:border-zinc-600 rounded" required="">
|
||||
@foreach ($types as $type)
|
||||
<option value="{{ $type->id }}">{{ $type->name }}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<div class="form-group flex flex-col">
|
||||
<label for="color_id">FilamentType</label>
|
||||
<select name="color_id" id="color_id" class="form-control bg-white dark:bg-zinc-800 border-zinc-50 dark:border-zinc-600 rounded" required="">
|
||||
@foreach ($colors as $color)
|
||||
<option value="{{ $color->id }}">{{ $color->name }} | {{ $color->hex }}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<div class="form-group flex flex-col">
|
||||
<label for="weight" class="text-lg ">Weight</label>
|
||||
<input type="number" id="weight" name="weight" class="form-control bg-white dark:bg-zinc-800 border-zinc-50 dark:border-zinc-600 rounded" required="">
|
||||
</div>
|
||||
|
||||
<div class="form-group flex flex-col">
|
||||
<label for="diameter" class="text-lg ">Diameter</label>
|
||||
<input type="number" step="0.01" id="diameter" name="diameter" class="form-control bg-white dark:bg-zinc-800 border-zinc-50 dark:border-zinc-600 rounded" required="">
|
||||
</div>
|
||||
|
||||
|
||||
<div class="form-group flex flex-col">
|
||||
<label for="price" class="text-lg ">Price</label>
|
||||
<input type="number" step="0.01" id="price" name="price" class="form-control bg-white dark:bg-zinc-800 border-zinc-50 dark:border-zinc-600 rounded" >
|
||||
</div>
|
||||
|
||||
<div class="flex justify-end gap-4">
|
||||
<a href="{{ route('filaments.index') }}" class="bg-zinc-500 hover:bg-zinc-700 text-zinc-800 hover:text-white font-bold py-2 px-4 rounded cursor-pointer">Cancel</a>
|
||||
<button type="submit" class="bg-green-500 hover:bg-green-700 text-zinc-800 hover:text-white font-bold py-2 px-4 rounded cursor-pointer">Submit</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</x-app-layout>
|
||||
@@ -0,0 +1,74 @@
|
||||
<x-app-layout>
|
||||
<x-slot name="header">
|
||||
{{ __('Edit Filament') }}
|
||||
</x-slot>
|
||||
|
||||
|
||||
<div class="py-12">
|
||||
<div class="max-w-7xl mx-auto sm:px-6 lg:px-8">
|
||||
<div class="bg-white dark:bg-zinc-700 p-4 overflow-hidden shadow-xl sm:rounded-lg">
|
||||
<form id="update-color-form" class="flex flex-col gap-6" method="POST" action="{{ route('filaments.update', $filament->id) }}">
|
||||
@csrf
|
||||
@method('PUT')
|
||||
<div class="form-group flex flex-col">
|
||||
<label for="name" class="text-lg ">Name</label>
|
||||
<input type="text" id="name" name="name" class="form-control bg-white dark:bg-zinc-800 border-zinc-50 dark:border-zinc-600 rounded" required="" value="{{ $filament->name }}">
|
||||
</div>
|
||||
|
||||
<div class="form-group flex flex-col">
|
||||
<label for="description">Description</label>
|
||||
<textarea name="description" class="form-control bg-white dark:bg-zinc-800 border-zinc-50 dark:border-zinc-600 rounded" value="{{ $filament->description }}"></textarea>
|
||||
</div>
|
||||
|
||||
<div class="form-group flex flex-col">
|
||||
<label for="manufacturer_id">Manufacturer</label>
|
||||
<select name="manufacturer_id" id="manufacturer_id" class="form-control bg-white dark:bg-zinc-800 border-zinc-50 dark:border-zinc-600 rounded" required="" value="{{ $filament->manufacturer_id }}">
|
||||
@foreach ($manufacturers as $manufacturer)
|
||||
<option value="{{ $manufacturer->id }}">{{ $manufacturer->name }}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<div class="form-group flex flex-col">
|
||||
<label for="type_id">FilamentType</label>
|
||||
<select name="type_id" id="type_id" class="form-control bg-white dark:bg-zinc-800 border-zinc-50 dark:border-zinc-600 rounded" required="" value="{{ $filament->type_id }}">
|
||||
@foreach ($types as $type)
|
||||
<option value="{{ $type->id }}">{{ $type->name }}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<div class="form-group flex flex-col">
|
||||
<label for="color_id">FilamentType</label>
|
||||
<select name="color_id" id="color_id" class="form-control bg-white dark:bg-zinc-800 border-zinc-50 dark:border-zinc-600 rounded" required="" value="{{ $filament->color_id }}">
|
||||
@foreach ($colors as $color)
|
||||
<option value="{{ $color->id }}">{{ $color->name }} | {{ $color->hex }}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<div class="form-group flex flex-col">
|
||||
<label for="weight" class="text-lg ">Weight</label>
|
||||
<input type="number" id="weight" name="weight" class="form-control bg-white dark:bg-zinc-800 border-zinc-50 dark:border-zinc-600 rounded" required="" value="{{ $filament->weight }}">
|
||||
</div>
|
||||
|
||||
<div class="form-group flex flex-col">
|
||||
<label for="diameter" class="text-lg ">Diameter</label>
|
||||
<input type="number" step="0.01" id="diameter" name="diameter" class="form-control bg-white dark:bg-zinc-800 border-zinc-50 dark:border-zinc-600 rounded" required="" value="{{ $filament->diameter }}">
|
||||
</div>
|
||||
|
||||
|
||||
<div class="form-group flex flex-col">
|
||||
<label for="price" class="text-lg ">Price</label>
|
||||
<input type="number" step="0.01" id="price" name="price" class="form-control bg-white dark:bg-zinc-800 border-zinc-50 dark:border-zinc-600 rounded" value="{{ $filament->price }}">
|
||||
</div>
|
||||
|
||||
<div class="flex justify-end gap-4">
|
||||
<a href="{{ route('filaments.index') }}" class="bg-zinc-500 hover:bg-zinc-700 text-zinc-800 hover:text-white font-bold py-2 px-4 rounded cursor-pointer">Cancel</a>
|
||||
<button type="submit" class="bg-green-500 hover:bg-green-700 text-zinc-800 hover:text-white font-bold py-2 px-4 rounded cursor-pointer">Submit</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</x-app-layout>
|
||||
@@ -14,11 +14,11 @@
|
||||
<div class="bg-white dark:bg-zinc-700 overflow-hidden shadow-xl sm:rounded-lg">
|
||||
<ul class="">
|
||||
<li class="flex gap-6 bg-zinc-50 dark:bg-zinc-900 p-2 px-4"><div class="">ID</div><div class="">Name</div><div class="">Options</div></li>
|
||||
@foreach ($types as $type)
|
||||
@foreach ($filaments as $filament)
|
||||
<li class="flex gap-6 py-3 px-4 items-center">
|
||||
<div class="p-2">{{ $type->id }}</div>
|
||||
<div class="p-2"><a href="/types/{{ $type->id }}">{{ $type->name }}</a></div>
|
||||
<div class="px-2"><a href="{{ route('types.edit', $type->id) }}"><flux:icon.ellipsis class="hover:text-zinc-50 hover:bg-zinc-500 stroke-3 rounded "/></a></div>
|
||||
<div class="p-2">{{ $filament->id }}</div>
|
||||
<div class="p-2"><a href="/filaments/{{ $filament->id }}">{{ $filament->name }}</a></div>
|
||||
<div class="px-2"><a href="{{ route('filaments.edit', $filament->id) }}"><flux:icon.ellipsis class="hover:text-zinc-50 hover:bg-zinc-500 stroke-3 rounded "/></a></div>
|
||||
</li>
|
||||
@endforeach
|
||||
</ul>
|
||||
|
||||
@@ -0,0 +1,60 @@
|
||||
<x-app-layout>
|
||||
<x-slot name="header">
|
||||
{{ $filament->name }}
|
||||
</x-slot>
|
||||
|
||||
<x-slot name="headeraction">
|
||||
<div class="flex gap-4 justify-end">
|
||||
<a href="{{ route('filaments.index') }}" class=" text-zinc-50 hover:text-zinc-300 font-bold text-base py-2 px-4 rounded cursor-pointer">Back</a>
|
||||
<a href="{{ route('filaments.edit', $filament->id) }}" class="bg-zinc-500 hover:bg-zinc-700 text-zinc-50 hover:text-white font-bold text-base py-2 px-4 rounded cursor-pointer">Edit</a>
|
||||
<a href="{{ route('filaments.destroy', $filament->id) }}" onclick="event.preventDefault(); document.getElementById('delete-form-{{ $filament->id }}').submit();" class="bg-red-500 hover:bg-red-500 text-zinc-50 hover:text-white font-bold text-base py-2 px-4 rounded cursor-pointer">Delete</a>
|
||||
</div>
|
||||
</x-slot>
|
||||
|
||||
<div class="py-12">
|
||||
<div class="max-w-7xl mx-auto sm:px-6 lg:px-8">
|
||||
<div class="bg-white dark:bg-zinc-700 overflow-hidden shadow-xl sm:rounded-lg">
|
||||
<div class="p-4">
|
||||
<div class="text-lg font-bold">Name</div>
|
||||
<div class="p-4">
|
||||
{{ $filament->name }}
|
||||
</div>
|
||||
<div class="text-lg font-bold">Description</div>
|
||||
<div class="p-4">
|
||||
{{ $filament->description }}
|
||||
</div>
|
||||
<div class="text-lg font-bold">Manufacturer</div>
|
||||
<div class="p-4">
|
||||
{{ $filament->manufacturer->name }}
|
||||
</div>
|
||||
<div class="text-lg font-bold">Type</div>
|
||||
<div class="p-4">
|
||||
{{ $filament->type->name }}
|
||||
</div>
|
||||
<div class="text-lg font-bold">Color</div>
|
||||
<div class="p-4 flex gap-2">
|
||||
<div class="w-8 h-8 rounded" style="background-color: {{ $filament->color->hex }}"></div>
|
||||
{{ $filament->color->name }}
|
||||
</div>
|
||||
<div class="text-lg font-bold">Weight</div>
|
||||
<div class="p-4">
|
||||
{{ $filament->weight }}g
|
||||
</div>
|
||||
<div class="text-lg font-bold">Diameter</div>
|
||||
<div class="p-4">
|
||||
{{ $filament->diameter }}mm
|
||||
</div>
|
||||
<div class="text-lg font-bold">Price</div>
|
||||
<div class="p-4">
|
||||
{{ $filament->price }}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<form id="delete-form-{{ $filament->id }}" method="POST" action="{{ route('filaments.destroy', $filament->id) }}" class="hidden">
|
||||
@csrf
|
||||
@method('DELETE')
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</x-app-layout>
|
||||
@@ -0,0 +1,44 @@
|
||||
<x-app-layout>
|
||||
<x-slot name="header">
|
||||
{{ __('Create Manufacturers') }}
|
||||
</x-slot>
|
||||
|
||||
<x-slot name="headeraction">
|
||||
<div class="flex gap-4 justify-end">
|
||||
<a href="{{ route('manufacturers.index') }}" class=" text-zinc-50 hover:text-zinc-300 font-bold text-base py-2 px-4 rounded cursor-pointer">Back</a>
|
||||
<a href="{{ route('manufacturers.store') }}" onclick="event.preventDefault(); document.getElementById('create-manufacturer-form').submit();" class="bg-green-500 hover:bg-green-700 text-zinc-700 hover:text-white font-bold text-base py-2 px-4 rounded cursor-pointer">Submit</a>
|
||||
</div>
|
||||
</x-slot>
|
||||
|
||||
|
||||
<div class="py-12">
|
||||
<div class="max-w-7xl mx-auto sm:px-6 lg:px-8">
|
||||
<div class="bg-white dark:bg-zinc-700 p-4 overflow-hidden shadow-xl sm:rounded-lg">
|
||||
<form id="create-manufacturer-form" class="flex flex-col gap-6" method="POST" action="{{ route('manufacturers.store') }}">
|
||||
@csrf
|
||||
<div class="form-group flex flex-col">
|
||||
<label for="name" class="text-lg ">Name</label>
|
||||
<input type="text" id="name" name="name" class="form-control bg-white dark:bg-zinc-800 border-zinc-50 dark:border-zinc-600 rounded" required="">
|
||||
</div>
|
||||
|
||||
<div class="form-group flex flex-col">
|
||||
<label for="description">Description</label>
|
||||
<textarea name="description" class="form-control bg-white dark:bg-zinc-800 border-zinc-50 dark:border-zinc-600 rounded"></textarea>
|
||||
</div>
|
||||
<div class="form-group flex flex-col">
|
||||
<label for="website" class="text-lg ">Website</label>
|
||||
<input type="text" id="website" name="website" class="form-control bg-white dark:bg-zinc-800 border-zinc-50 dark:border-zinc-600 rounded">
|
||||
</div>
|
||||
<div class="form-group flex flex-col">
|
||||
<label for="logo" class="text-lg ">Logo</label>
|
||||
<input type="text" id="logo" name="logo" class="form-control bg-white dark:bg-zinc-800 border-zinc-50 dark:border-zinc-600 rounded">
|
||||
</div>
|
||||
<div class="flex justify-end gap-4">
|
||||
<a href="{{ route('manufacturers.index') }}" class="bg-zinc-500 hover:bg-zinc-700 text-zinc-800 hover:text-white font-bold py-2 px-4 rounded cursor-pointer">Cancel</a>
|
||||
<button type="submit" class="bg-green-500 hover:bg-green-700 text-zinc-800 hover:text-white font-bold py-2 px-4 rounded cursor-pointer">Submit</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</x-app-layout>
|
||||
@@ -0,0 +1,34 @@
|
||||
<x-app-layout>
|
||||
<x-slot name="header">
|
||||
{{ __('Edit Manufacturers') }}
|
||||
</x-slot>
|
||||
|
||||
|
||||
<div class="py-12">
|
||||
<div class="max-w-7xl mx-auto sm:px-6 lg:px-8">
|
||||
<div class="bg-white dark:bg-zinc-700 p-4 overflow-hidden shadow-xl sm:rounded-lg">
|
||||
<form id="update-manufacturer-form" class="flex flex-col gap-6" method="POST" action="{{ route('manufacturers.update', $manufacturer->id) }}">
|
||||
@csrf
|
||||
@method('PUT')
|
||||
<div class="form-group flex flex-col">
|
||||
<label for="name" class="text-lg ">Name</label>
|
||||
<input type="text" id="name" name="name" class="form-control bg-white dark:bg-zinc-800 border-zinc-50 dark:border-zinc-600 rounded" required="" value="{{ $manufacturer->name }}">
|
||||
</div>
|
||||
|
||||
<div class="form-group flex flex-col">
|
||||
<label for="description">Description</label>
|
||||
<textarea name="description" class="form-control bg-white dark:bg-zinc-800 border-zinc-50 dark:border-zinc-600 rounded" value="{{ $manufacturer->description }}"></textarea>
|
||||
</div>
|
||||
<div class="form-group flex flex-col">
|
||||
<label for="website" class="text-lg ">Website</label>
|
||||
<input type="text" id="website" name="website" class="form-control bg-white dark:bg-zinc-800 border-zinc-50 dark:border-zinc-600 rounded" value="{{ $manufacturer->website }}">
|
||||
</div>
|
||||
<div class="flex justify-end gap-4">
|
||||
<a href="{{ route('manufacturers.index') }}" class="bg-zinc-500 hover:bg-zinc-700 text-zinc-800 hover:text-white font-bold py-2 px-4 rounded cursor-pointer">Cancel</a>
|
||||
<button type="submit" class="bg-green-500 hover:bg-green-700 text-zinc-800 hover:text-white font-bold py-2 px-4 rounded cursor-pointer">Submit</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</x-app-layout>
|
||||
@@ -0,0 +1,30 @@
|
||||
<x-app-layout>
|
||||
<x-slot name="header">
|
||||
{{ __('Manufacturers') }}
|
||||
</x-slot>
|
||||
|
||||
<x-slot name="headeraction">
|
||||
<div class="flex gap-4 justify-end">
|
||||
<a href="{{ route('manufacturers.create') }}" class="bg-zinc-500 hover:bg-green-500 text-zinc-50 hover:text-zinc-700 font-bold text-base py-2 px-4 rounded cursor-pointer">Create</a>
|
||||
</div>
|
||||
</x-slot>
|
||||
|
||||
<div class="py-12">
|
||||
<div class="max-w-7xl mx-auto sm:px-6 lg:px-8">
|
||||
<div class="bg-white dark:bg-zinc-700 overflow-hidden shadow-xl sm:rounded-lg">
|
||||
<ul class="">
|
||||
<li class="flex gap-6 bg-zinc-50 dark:bg-zinc-900 p-2 px-4"><div class="">ID</div><div class="">Name</div><div class="">Options</div></li>
|
||||
@foreach ($manufacturers as $manufacturer)
|
||||
<li class="flex gap-6 py-3 px-4 items-center">
|
||||
<div class="p-2">{{ $manufacturer->id }}</div>
|
||||
<div class="p-2"><a href="/manufacturers/{{ $manufacturer->id }}">{{ $manufacturer->name }}</a></div>
|
||||
<div class="p-2"><a class="flex gap-2" target="_blank" href="{{ $manufacturer->website }}">{{ $manufacturer->website }}<flux:icon.arrow-top-right-on-square /></a></div>
|
||||
<div class="px-2"><a href="{{ route('manufacturers.edit', $manufacturer->id) }}"><flux:icon.ellipsis class="hover:text-zinc-50 hover:bg-zinc-500 stroke-3 rounded "/></a></div>
|
||||
</li>
|
||||
@endforeach
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</x-app-layout>
|
||||
@@ -0,0 +1,35 @@
|
||||
<x-app-layout>
|
||||
<x-slot name="header">
|
||||
{{ $manufacturer->name }}
|
||||
</x-slot>
|
||||
|
||||
<x-slot name="headeraction">
|
||||
<div class="flex gap-4 justify-end">
|
||||
<a href="{{ route('manufacturers.index') }}" class=" text-zinc-50 hover:text-zinc-300 font-bold text-base py-2 px-4 rounded cursor-pointer">Back</a>
|
||||
<a href="{{ route('manufacturers.edit', $manufacturer->id) }}" class="bg-zinc-500 hover:bg-zinc-700 text-zinc-50 hover:text-white font-bold text-base py-2 px-4 rounded cursor-pointer">Edit</a>
|
||||
<a href="{{ route('manufacturers.destroy', $manufacturer->id) }}" onclick="event.preventDefault(); document.getElementById('delete-form-{{ $manufacturer->id }}').submit();" class="bg-red-500 hover:bg-red-500 text-zinc-50 hover:text-white font-bold text-base py-2 px-4 rounded cursor-pointer">Delete</a>
|
||||
</div>
|
||||
</x-slot>
|
||||
|
||||
<div class="py-12">
|
||||
<div class="max-w-7xl mx-auto sm:px-6 lg:px-8">
|
||||
<div class="bg-white dark:bg-zinc-700 overflow-hidden shadow-xl sm:rounded-lg">
|
||||
<div class="p-4">
|
||||
<div class="text-lg font-bold">Description</div>
|
||||
<div class="p-4">
|
||||
{{ $manufacturer->description }}
|
||||
</div>
|
||||
<div class="text-lg font-bold">Website</div>
|
||||
<div class="p-4">
|
||||
<a href="{{ $manufacturer->website }}" class="flex gap-2" target="_blank">{{ $manufacturer->website }}<flux:icon.arrow-top-right-on-square /></a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<form id="delete-form-{{ $manufacturer->id }}" method="POST" action="{{ route('manufacturers.destroy', $manufacturer->id) }}" class="hidden">
|
||||
@csrf
|
||||
@method('DELETE')
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</x-app-layout>
|
||||
@@ -3,6 +3,8 @@
|
||||
use Illuminate\Support\Facades\Route;
|
||||
use App\Http\Controllers\FilamentTypeController;
|
||||
use App\Http\Controllers\ColorController;
|
||||
use App\Http\Controllers\FilamentController;
|
||||
use App\Http\Controllers\ManufacturerController;
|
||||
|
||||
Route::get('/', function () {
|
||||
return view('welcome');
|
||||
@@ -23,5 +25,9 @@ Route::middleware([
|
||||
Route::resource('types', FilamentTypeController::class);
|
||||
// Colors
|
||||
Route::resource('colors', ColorController::class);
|
||||
// Filaments
|
||||
Route::resource('filaments', FilamentController::class);
|
||||
// Manufacturers
|
||||
Route::resource('manufacturers', ManufacturerController::class);
|
||||
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user