Reputation: 371
I have an issue trying to use the show method in a resource controller in laravel 5.7. I'm working with VueJS and axios to http requests. The index method is called instead show method. I'm pass do the call with get method and the ID param.
Routes:
POST | products | products.store | App\Http\Controllers\ProductoController@store | web |
| | GET|HEAD | products/create | products.create | App\Http\Controllers\ProductoController@create | web |
| | DELETE | products/{product} | products.destroy | App\Http\Controllers\ProductoController@destroy | web |
| | PUT|PATCH | products/{product} | products.update | App\Http\Controllers\ProductoController@update | web |
| | GET|HEAD | products/{product} | products.show | App\Http\Controllers\ProductoController@show | web |
| | GET|HEAD | products/{product}/edit | products.edit | App\Http\Controllers\ProductoController@edit | web |
web.php:
Route::get('/', function () {
return view('welcome');
});
Auth::routes();
Route::get('/home', 'HomeController@index')->name('home');
//Productos
Route::resource('products', 'ProductoController');
Route::get('duplicar/{param?}', 'ProductoExtController@duplicar');
Route::post('mostrarProductos', 'ProductoExtController@mostrarProductos');
Route::post('guardarValoresEditados', 'ProductoExtController@guardarValoresEditados');
Route::get('imprimirListadoPrecios', 'ProductoExtController@imprimirListadoPrecios');
Route::post('mostrarProductosStickers', 'ProductoExtController@mostrarProductosStickers');
Route::post('imprimirStickers','ProductoExtController@imprimirStickers');
//Colecciones
Route::resource('colecciones', 'ColeccionController');
//Categorias
Route::resource('categorias', 'CategoriaController');
//Crostas
Route::resource('crostas', 'CrostaController');
Route::get('crostasaut/{param?}', 'CrostaExtController@autocomplete');
//Folias
Route::resource('folias', 'FoliaController');
Route::get('foliasaut/{param?}', 'FoliaExtController@autocomplete');
Route::get('{path}', 'HomeController@index')->where('path','([A-z\d-\/_.]+)?');
And this is my http-request with axios:
editarProducto(pDatosFila){
axios.get('products', {
params: {
id: pDatosFila.f014_id
}
})
.then(function (response) {
console.log(response);
})
.catch(function (error) {
console.log(error);
})
.then(function () {
// always executed
});
}
And to end this is the response:
current_page: 1
data: [{f014_id: 25, f014_id_old: null, f014_nombre: "carlos ruales", f014_deleted: null,…},…]
first_page_url: "http://localhost:8000/products?page=1"
from: 1
last_page: 1
last_page_url: "http://localhost:8000/products?page=1"
next_page_url: null
path: "http://localhost:8000/products"
per_page: 10
prev_page_url: null
to: 7
total: 7
Upvotes: 1
Views: 1592
Reputation: 56
What you are currently doing is :
axios.get('products', {
params: {
id: pDatosFila.f014_id
}
})
is equivalent to : axios.get('/products?id=id') (NOT THE RIGHT FORMAT)
What you need to do is :
axios.get('/products/product_id')
So, you can do something like :
axios.get('products/'+ pDatosFila.f014_id)
and this will work. :)
PS : always check the network tab in developer tools in browser.
Reference : axios
Upvotes: 4