Product editing
This commit is contained in:
parent
09d737dfab
commit
46e1fa8aee
7 changed files with 62 additions and 13 deletions
|
@ -1 +1 @@
|
||||||
{"php":"8.0.13","version":"3.0.0","indent":" ","lineEnding":"\n","rules":{"blank_line_after_opening_tag":true,"braces":{"allow_single_line_anonymous_class_with_empty_body":true},"compact_nullable_typehint":true,"declare_equal_normalize":true,"lowercase_cast":true,"lowercase_static_reference":true,"new_with_braces":true,"no_blank_lines_after_class_opening":true,"no_leading_import_slash":true,"no_whitespace_in_blank_line":true,"ordered_class_elements":{"order":["use_trait"]},"ordered_imports":{"imports_order":["class","function","const"],"sort_algorithm":"none"},"return_type_declaration":true,"short_scalar_cast":true,"single_blank_line_before_namespace":true,"single_trait_insert_per_statement":true,"ternary_operator_spaces":true,"visibility_required":{"elements":["const","method","property"]},"blank_line_after_namespace":true,"class_definition":true,"constant_case":true,"elseif":true,"function_declaration":true,"indentation_type":true,"line_ending":true,"lowercase_keywords":true,"method_argument_space":{"on_multiline":"ensure_fully_multiline"},"no_break_comment":true,"no_closing_tag":true,"no_spaces_after_function_name":true,"no_spaces_inside_parenthesis":true,"no_trailing_whitespace":true,"no_trailing_whitespace_in_comment":true,"single_blank_line_at_eof":true,"single_class_element_per_statement":{"elements":["property"]},"single_import_per_statement":true,"single_line_after_imports":true,"switch_case_semicolon_to_colon":true,"switch_case_space":true,"encoding":true,"full_opening_tag":true},"hashes":{"\/run\/user\/1000\/neoformat\/product.blade.php":1493321553,"\/tmp\/neoformat\/user.blade.php":2134171036}}
|
{"php":"8.0.13","version":"3.0.0","indent":" ","lineEnding":"\n","rules":{"blank_line_after_opening_tag":true,"braces":{"allow_single_line_anonymous_class_with_empty_body":true},"compact_nullable_typehint":true,"declare_equal_normalize":true,"lowercase_cast":true,"lowercase_static_reference":true,"new_with_braces":true,"no_blank_lines_after_class_opening":true,"no_leading_import_slash":true,"no_whitespace_in_blank_line":true,"ordered_class_elements":{"order":["use_trait"]},"ordered_imports":{"imports_order":["class","function","const"],"sort_algorithm":"none"},"return_type_declaration":true,"short_scalar_cast":true,"single_blank_line_before_namespace":true,"single_trait_insert_per_statement":true,"ternary_operator_spaces":true,"visibility_required":{"elements":["const","method","property"]},"blank_line_after_namespace":true,"class_definition":true,"constant_case":true,"elseif":true,"function_declaration":true,"indentation_type":true,"line_ending":true,"lowercase_keywords":true,"method_argument_space":{"on_multiline":"ensure_fully_multiline"},"no_break_comment":true,"no_closing_tag":true,"no_spaces_after_function_name":true,"no_spaces_inside_parenthesis":true,"no_trailing_whitespace":true,"no_trailing_whitespace_in_comment":true,"single_blank_line_at_eof":true,"single_class_element_per_statement":{"elements":["property"]},"single_import_per_statement":true,"single_line_after_imports":true,"switch_case_semicolon_to_colon":true,"switch_case_space":true,"encoding":true,"full_opening_tag":true},"hashes":{"\/run\/user\/1000\/neoformat\/product.blade.php":1493321553,"\/tmp\/neoformat\/user.blade.php":2134171036,"\/tmp\/neoformat\/edit.blade.php":2692964585,"\/tmp\/neoformat\/ProductController.php":4228240463}}
|
|
@ -50,5 +50,6 @@ class ImageController extends Controller
|
||||||
public function destroy(Image $image)
|
public function destroy(Image $image)
|
||||||
{
|
{
|
||||||
$image->delete();
|
$image->delete();
|
||||||
|
return back();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,6 +2,7 @@
|
||||||
|
|
||||||
namespace App\Http\Controllers;
|
namespace App\Http\Controllers;
|
||||||
|
|
||||||
|
use App\Models\Image;
|
||||||
use App\Models\Product;
|
use App\Models\Product;
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
use Illuminate\Support\Facades\Log;
|
use Illuminate\Support\Facades\Log;
|
||||||
|
@ -21,7 +22,8 @@ class ProductController extends Controller
|
||||||
*/
|
*/
|
||||||
public function create()
|
public function create()
|
||||||
{
|
{
|
||||||
return view("product/create");
|
$prod = new Product();
|
||||||
|
return view("product/edit", [ 'product' => $prod,'new'=>true]);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -32,17 +34,23 @@ class ProductController extends Controller
|
||||||
*/
|
*/
|
||||||
public function store(Request $request)
|
public function store(Request $request)
|
||||||
{
|
{
|
||||||
Log::debug($request);
|
$validated = $request->validate([
|
||||||
$request->validate([
|
|
||||||
'name'=>'required',
|
'name'=>'required',
|
||||||
'description'=>'required',
|
'description'=>'required',
|
||||||
|
'price'=>'required|numeric',
|
||||||
|
'visualization' => 'image|mimes:jpg,png,jpeg,gif,svg,webp|max:5000',
|
||||||
]);
|
]);
|
||||||
$product = new Product([
|
|
||||||
'name' => $request->get("name"),
|
$product = new Product($validated);
|
||||||
'description' => $request->get("description")
|
|
||||||
]);
|
|
||||||
$product->save();
|
$product->save();
|
||||||
//echo $product->uuid;
|
|
||||||
|
if (isset($validated["visualization"])) {
|
||||||
|
$visualization = new Image();
|
||||||
|
|
||||||
|
$visualization->path = $request->file('image')->store("uploads");
|
||||||
|
|
||||||
|
$product->images()->save($visualization);
|
||||||
|
}
|
||||||
return redirect()->route("product.show", [ 'product' => $product])->with("message", "Product created successfully");
|
return redirect()->route("product.show", [ 'product' => $product])->with("message", "Product created successfully");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -54,7 +62,7 @@ class ProductController extends Controller
|
||||||
*/
|
*/
|
||||||
public function show(Product $product)
|
public function show(Product $product)
|
||||||
{
|
{
|
||||||
return view("product/view", ["product" => $product]);
|
return view("product.view", ["product" => $product]);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -65,7 +73,7 @@ class ProductController extends Controller
|
||||||
*/
|
*/
|
||||||
public function edit(Product $product)
|
public function edit(Product $product)
|
||||||
{
|
{
|
||||||
//
|
return view("product.edit", ["product" => $product, 'new'=>false]);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -79,6 +87,14 @@ class ProductController extends Controller
|
||||||
{
|
{
|
||||||
$product->fill($request->all());
|
$product->fill($request->all());
|
||||||
$product->save();
|
$product->save();
|
||||||
|
if (isset($request["image"])) {
|
||||||
|
$visualization = new Image();
|
||||||
|
|
||||||
|
$visualization->path = $request->file('image')->store("uploads");
|
||||||
|
|
||||||
|
$product->images()->save($visualization);
|
||||||
|
}
|
||||||
|
//dd($product, $request, $visualization);
|
||||||
return redirect()->route("product.show", [ 'product' => $product])->with("message", "Product created successfully");
|
return redirect()->route("product.show", [ 'product' => $product])->with("message", "Product created successfully");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -19,5 +19,7 @@ class Product extends Model
|
||||||
protected $fillable = [
|
protected $fillable = [
|
||||||
'name',
|
'name',
|
||||||
'description',
|
'description',
|
||||||
|
'images',
|
||||||
|
'price'
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
<a href="{{ route('product.show', ['product' => $product]) }}">
|
<a href="{{ route('product.show', ['product' => $product]) }}">
|
||||||
<div class="product-container">
|
<div class="product-container">
|
||||||
<img class="product-image" src="@if(isset($product->images[0])) {{ $product->images[0]->URL() }} @else {{ asset("test.txt") }} @endif">
|
<img class="product-image" src="@if(isset($product->images[0])) {{ $product->images[0]->URL() }} @else {{ "" }} @endif">
|
||||||
<div class="name-price-container">
|
<div class="name-price-container">
|
||||||
<h2 class="product-name"> {{ $product->name }} </h2>
|
<h2 class="product-name"> {{ $product->name }} </h2>
|
||||||
<h3>{{ ($product->price) }}<span class="price-currency">zł</span></h3>
|
<h3>{{ ($product->price) }}<span class="price-currency">zł</span></h3>
|
||||||
|
|
30
resources/views/product/edit.blade.php
Normal file
30
resources/views/product/edit.blade.php
Normal file
|
@ -0,0 +1,30 @@
|
||||||
|
@extends('layouts.app')
|
||||||
|
|
||||||
|
@section('title', "Sklep")
|
||||||
|
@section('main')
|
||||||
|
@if($new)
|
||||||
|
@php($post_url = route("product.store"))
|
||||||
|
@else
|
||||||
|
@php($post_url = route("product.update", $product))
|
||||||
|
@endif
|
||||||
|
<form action="{{ $post_url }}" method="post" enctype="multipart/form-data">
|
||||||
|
<input type="text" name="name" value="{{ $product->name }}">
|
||||||
|
<textarea name="description">{{ $product->description }}</textarea>
|
||||||
|
<input type="number" name="price" value="{{ $product->price }}">
|
||||||
|
<input type="file" name="image">
|
||||||
|
<button type="submit">Zatwierdź</button>
|
||||||
|
|
||||||
|
@if(!$new)
|
||||||
|
@method("PATCH")
|
||||||
|
@endif
|
||||||
|
@csrf
|
||||||
|
</form>
|
||||||
|
@foreach($product->images as $vis)
|
||||||
|
<form action="{{ route("image.destroy", $vis) }}" method="post">
|
||||||
|
<img src="{{ $vis->URL() }}"/>
|
||||||
|
<button type="submit">Usuń</button>
|
||||||
|
@method("DELETE")
|
||||||
|
@csrf
|
||||||
|
</form>
|
||||||
|
@endforeach()
|
||||||
|
@endsection()
|
|
@ -43,4 +43,4 @@ Route::resource("product", ProductController::class)->only(["show"]);
|
||||||
Route::resource("order", OrderController::class)->middleware("auth");
|
Route::resource("order", OrderController::class)->middleware("auth");
|
||||||
Route::post('/order/create', [OrderController::class, "create"])->name("order.create");
|
Route::post('/order/create', [OrderController::class, "create"])->name("order.create");
|
||||||
|
|
||||||
Route::resource("image", ImageController::class)->only(["store", "delete", "create"])->middleware("auth.admin");
|
Route::resource("image", ImageController::class)->only(["store", "destroy", "create"])->middleware("auth.admin");
|
||||||
|
|
Loading…
Reference in a new issue