2016-09-10 81 views
0

製作我的第一個Silex應用程序,我需要一些幫助,我正在寫一條路線來顯示一個項目然後進行編輯,因此首先這是我的'get'路線,它接收項目的代碼以顯示其細節。如何在Silex 2中發送可變的路由到路由?

$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' 
    ]); 
}); 

所以在 '後' 的路線,我需要得到該變量編輯的項目,

$app->post('/cat/productos_edit/', function() use($app){ 
    echo $app['itemtoedit']; 
})->bind('cat.productos.edit'); 

但後來我得到這個錯誤:

Silex error

所以我覺得也許我錯過了什麼,希望ypu能幫助我。

回答

3

PHP/Silex的不會讓你之間獲得任何上下文,並張貼所以恕我直言,你應該做的:

$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'); 
+0

Definetely的「絕招」是使用你用於獲取發佈網址相同的密鑰發佈新數據的項目。請務必進行安全檢查,確保任何人都可以將數據發佈到特定網址並更改您的項目! (這是CSRF令牌爲什麼創建的原因) – mTorres

+0

謝謝,是的,我想我會做一個隱藏的輸入來保存該密鑰,當然我已經實現了CSRF保護 – DaveSanchez

+0

或者只是將您的提交網址鏈接到' cat.productos.edit'在你的樹枝模板中 – seblucas