laravel - laravel 中的 show 方法改为返回 index 方法
问题描述
我在 laravel 5.7 的资源控制器中尝试使用 show 方法时遇到问题。我正在使用 VueJS 和 axios 来处理 http 请求。index 方法被调用而不是 show 方法。我通过 get 方法和ID参数进行调用。
路线:
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 |
网页.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-\/_.]+)?');
这是我对 axios 的 http 请求:
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
});
}
最后,这是回应:
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
解决方案
您目前正在做的是:
axios.get('products', {
params: {
id: pDatosFila.f014_id
}
})
相当于: axios.get('/products?id= id ') (不是正确的格式)
你需要做的是:
axios.get('/products/ product_id ')
因此,您可以执行以下操作:
axios.get('products/'+ pDatosFila.f014_id)
这将起作用。:)
PS:始终检查浏览器中开发人员工具中的网络选项卡。
参考:axios
推荐阅读
- java - 如何从处理器内的 Apache Camel 中的路由获取响应并在处理器内调用该路由?
- groovy - Spock-在被测类的私有方法调用中捕获方法参数
- scala - Scala Style:所有分支的模式匹配都是带有模式保护的通配符
- node.js - 使用特定选项或环境变量在 AWS lambda 中启动 NodeJS 运行时
- apache-spark - Apache Spark 驱动程序日志未指定阶段取消的原因
- docker - docker中的Gulp watch在docker中花费太长时间
- .net-core - 实体框架核心 3.1 中的 Pluralizer 模型名称
- c++ - SFINAE enable_if 与 is_same 用法
- go - 处理“解析器未返回地址”grpc 错误
- html - 半句怎么写