Php 如何在Silex 2中向route发送可变路由?

Php 如何在Silex 2中向route发送可变路由?,php,global,silex,Php,Global,Silex,制作我的第一个Silex应用程序,我需要一些帮助,我正在编写一个路径来显示一个项目,然后对其进行编辑,因此首先是我的“获取”路径,它接收项目的代码以显示其详细信息 $app->get('/cat/productos_edit/{key}', function($key) use($app){ $app['twig']->addGlobal('itemtoedit', $key); //This is how I'm trying to do it return $app['twi

制作我的第一个Silex应用程序,我需要一些帮助,我正在编写一个路径来显示一个项目,然后对其进行编辑,因此首先是我的“获取”路径,它接收项目的代码以显示其详细信息

$app->get('/cat/productos_edit/{key}', function($key) use($app){

$app['twig']->addGlobal('itemtoedit', $key); //This is how I'm trying to do it

return $app['twig']->render('catalogo/productos/edit.html',[
    'title' => 'Catálogo - Productos'
  ]);
});
所以在“post”路径中,我需要获取该变量来编辑项目

 $app->post('/cat/productos_edit/', function() use($app){
    echo $app['itemtoedit'];
 })->bind('cat.productos.edit');
但后来我犯了一个错误:


所以我想我可能遗漏了什么,希望ypu能帮助我。

PHP/Silex不会在get和post之间保留任何上下文,所以我想你应该怎么做:

$app->post('/cat/productos_edit/{key}', function($key) use($app){
    // get your item from database with its key
    // update item with your post payload
})->bind('cat.productos.edit');

PHP/Silex不会在get和post之间保留任何上下文,因此我建议您:

$app->post('/cat/productos_edit/{key}', function($key) use($app){
    // get your item from database with its key
    // update item with your post payload
})->bind('cat.productos.edit');

确切地说,“诀窍”是在发布url中使用与发布新数据获取项目相同的键。请务必进行安全检查,否则任何人都可以将数据发布到特定的URL并更改您的项目!(这就是为什么创建CSRF令牌的原因之一)谢谢,是的,我想我会做一个隐藏输入来保存该密钥,确保我已经实现了CSRF保护,或者只是在你的小树枝模板中将你的提交url链接到“cat.productos.edit”定义为“技巧”是在发布url中使用与您用于获取发布新数据的项目相同的键。请务必进行安全检查,否则任何人都可以将数据发布到特定的URL并更改您的项目!(这就是为什么创建CSRF令牌的原因之一)谢谢,是的,我想我会做一个隐藏输入来保存该密钥,确保我已经实现了CSRF保护,或者只需将您的提交url链接到您的小枝模板中的“cat.productos.edit”