我无法在URI slim框架上传递参数id

时间:2017-04-16 02:22:52

标签: php parameters routes frameworks slim

我有更新表格来更新产品详情:

<form action="{{ path_for('product.update', {id: product.id}) }}" method="get">
// another fields
<input type="hidden" name="_METHOD" value="PUT">
<input type="submit" name="submit" class="submit" value="update">

路线:

$app->get('/admin/product/edit/{id}', ['maimana\Controllers\AdminController','editupdateProduct'])->setName('product.edit');
$app->get('/admin/product/update/product/{id}', ['maimana\Controllers\AdminController','updateProduct'])->setName('product.update');

和控制器:

公共函数updateProduct($ id,Request $ request,Response $ response){

  $product = $this->product->where('id',$id)->first()->update([
    'title' => $request->getParam('title'),
    'category' => $request->getParam('category'),
    'slug' => $request->getParam('slug'),
    'description' => $request->getParam('description'),
    'price' => $request->getParam('price'),
    'image' => $request->getParam('image'),
    'stock' => $request->getParam('stock')
  ]);

  return $response->withRedirect($this->router->pathFor('admin.product'));


}

每次我点击更新按钮,我都无法自动传递参数,它将变为PAGE NOT FOUND。但是当我手动添加id时,它会工作并重定向回admin.product。

请帮助我,我被困了大约4天,我需要这个来完成我的大学任务

1 个答案:

答案 0 :(得分:0)

Slim似乎还使用了Restful URL。当你在表单中将_method设置为'put'并发送请求时,它会将其解释为PUT请求而不是GET。由于这是你的大学任务,我想我已经帮助你解决了99%的问题。