Pracuję we freamworku laravel, ale nie znalazłem nigdzie w jaki sposób można za jego pomocą ustrzec się przed sytuacjami, w której użytkownik próbuje dodać podmienione dane. Przykładowo za pomocą inspect zmienia rozmiar lub id produktu. Jeżeli się mylę to zwracam honor i prosiłbym o podzielenie się linkiem do rozwiązania. Przy okazji napisałem walidację działającą na prostych instrukcjach. Chciałbym poznać waszą opinie na temat poniższego rozwiązania i ewentualnie co przydałoby się poprawić.
public function create(Request $request, $id)
{
// Request validation
$size = $request->size;
if($size != null) {
$validate_product = Product::where('id', $id)->get();
$validate_size = ProductSize::whereHas('availableSizes', function ($query) use ($id, $size) {
$query->where('size', '=', $size)->where('product_id', '=', $id);
})->get();
if($validate_product->count() > 0 && $validate_size->count() > 0) {
$validation = true;
} else {
$validation = false;}
} else {
$validate_product = Product::where('id', $id)->get();
$validate_size = ProductSize::whereHas('availableSizes', function ($query) use ($id) {
$query->where('product_id', '=', $id);
})->get();
if($validate_product->count() > 0 && $validate_size->count() == 0) {
$validation = true;
} else {
$validation = false;}
}
if($validation == true) {
foreach($validate_product as $product)
'id' => $product['id'].$request->size,
'name' => $product['title'],
'price' => $product['price'],
'quantity' => $request->quantity,
'thumbnail' => $product['img_1'],
'size' => $request->size
)
));
return back();
} else {
return back()->with('error', 'Wystąpił problem, spróbuj ponownie.');
}
}