I get a 404 error when I access this edit_product route that is served by a Product controller, codes are attached below
Route::get('/edit_product{id}', 'ProductController@editproduct');
I would like your help in finding where the error in my code is. Thank you.
Here is the relevant code:
web.php
<?php
use IlluminateSupportFacadesRoute;
Route::get('/', 'ClientController@home');
Route::get('/checkout', 'ClientController@checkout');
Route::get('/shop', 'ClientController@shop');
Route::get('/cart', 'ClientController@cart');
Route::get('/login', 'ClientController@login');
Route::get('/signup', 'ClientController@signup');
Route::get('/dashboard', 'AdminController@dashboard');
Route::get('/addcategories', 'CategoryController@addcategories');
Route::post('/savecategories', 'CategoryController@savecategories');
Route::get('/categories', 'CategoryController@categories');
Route::get('/edit_category{id}', 'CategoryController@edit');
Route::get('/delete{id}', 'CategoryController@delete');
Route::get('/addslider', 'SliderController@addslider');
Route::get('/sliders', 'SliderController@slider');
Route::get('/addproducts', 'ProductController@addproducts');
Route::get('/products', 'ProductController@products');
Route::post('/saveproducts', 'ProductController@saveproduct');
Route::get('/edit_product{id}', 'ProductController@editproduct');
Route::get('/orders', 'ProductController@orders');
products.blade.php
@extends('admin.layouts.appadmin')
@section('title')
Products
@endsection
@section('content')
{{Form::hidden('', $increment=1)}}
<div class="card">
<div class="card-body">
<h4 class="card-title">Products table</h4>
<div class="row">
<div class="col-12">
<div class="table-responsive">
<table id="order-listing" class="table">
<thead>
<tr>
<th>Order #</th>
<th>Image</th>
<th>Name</th>
<th>Price</th>
<th>Category</th>
<th>Status</th>
<th>Actions</th>
</tr>
</thead>
@foreach ($products as $product)
<tbody>
<tr>
<td>{{$increment}}</td>
<td><img src="/storage/product_images/{{$product->product_image}}"></td>
<td>{{$product->product_name}}</td>
<td>KES{{$product->product_price}}</td>
<td>{{$product->product_category}}</td>
@if($product->status ==1)
<td>
<label class="badge badge-success">Activated</label>
</td>
@else
<td>
<label class="badge badge-danger">Un Activated</label>
</td>
@endif
<td>
<button class="btn-sm btn-outline-info" onclick="window.location ='{{url('/edit_product/'.$product->id)}}'">Edit</button>
<a href="" class="btn-sm btn-outline-danger" id="delete">Delete</a>
@if($product->status==1)
<a href="" class="btn-sm btn-outline-warning">Unactivate</a>
@else
<a href="" class="btn-sm btn-outline-success">Activate</a>
@endif
</td>
</tr>
{{Form::hidden('', $increment=$increment+1)}}
@endforeach
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
@endsection
@section('scripts')
<script src="{{'backend/js/data-table.js'}}"></script>
@endsection
ProductController.php
<?php
namespace AppHttpControllers;
use IlluminateHttpRequest;
use AppModelsProduct;
use AppModelsCategory;
class ProductController extends Controller
{
public function editproduct($id){
$product=Product::find($id);
return view('admin.product')->with('product', $product);
}
public function products(){
$products=Product::get();
return view('admin.products')->with('products', $products);
}
public function orders(){
return view('admin.orders');
}
public function addproducts(){
$categories=Category::All()->pluck('category_name', 'category_name');
return view('admin.addproducts')->with('categories', $categories);
}
public function saveproduct(Request $request){
$this->validate($request, ['product_name'=> 'required',
'product_price'=> 'required',
'product_image'=>'image|nullable|max:1999']);
if($request->input('product_category')){
if($request->hasFile('product_image')){
//1 : get filename with ext
$fileNameWithExt = $request->file('product_image')->getClientOriginalName();
//2 : get just file name
$fileName = pathinfo($fileNameWithExt, PATHINFO_FILENAME);
//3 : get just extension
$extension = $request->file('product_image')->getClientOriginalExtension();
//4 : file name to store
$fileNameToStore = $fileName.'_'.time().'.'.$extension;
//upload image
$path =$request->file('product_image')->storeAs('public/product_images', $fileNameToStore);
}
else{
$fileNameToStore ='noimage.jpg';
}
$product=new Product();
$product->product_name =$request->input('product_name');
$product->product_price =$request->input('product_price');
$product->product_category =$request->input('product_category');
$product->product_image =$fileNameToStore;
$product->status =1;
$product->save();
return redirect('/addproducts')->with('status', 'The '.$product->product_name.' Product has been saved successfully');
}else{
return redirect('/addproducts')->with('status1', 'You need to select a Category for your product');
}
}
}
I have tried.
- replacing it with full namespace:
Route::get('/edit_product{id}', 'AppHttpControllersProductController@editproduct');
php artisan cache:clear
php artisan cache:cache
question from:
https://stackoverflow.com/questions/65917589/404-error-on-route-that-exists-in-laravel-8 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…