2016-05-13 74 views
0

我一直只在Slim工作了一段時間。我仍然在版本2上。到目前爲止,一切都很順利,但我遇到了一些麻煩。我有一個基於URL末尾的GET變量顯示內容的頁面。該網址看起來如下...在Slim中,我如何傳遞一個GET變量來呈現

http://localhost/trailcache.com/checklist/21 

的get路線的第一行看起來像這樣...

$app->get('/checklist/:Id', function($Id) use($app) { 

它結束這樣的...

})->name('checklist'); 

該Id參數控制我拉到頁面中的什麼信息,一切都進行得很好,但現在我已經添加了一個聯繫表單,並與它,一些驗證。我正在寫數據庫並呈現新內容。當我嘗試將錯誤發送回頁面時出現問題。目前看起來像這樣...

$app->render('user/checklist.php', [ 
    'Id' => $Id, 
    'errors' => $v->errors(), 
    'request' => $request 
])->name('checklist'); 

這不起作用。該頁面爲空白。它返回的是網址...

http://localhost/trailcache.com/checklist 

的文檔,使節目...

$app->get('/books/:id', function ($id) use ($app) { 
    $app->render('myTemplate.php', array('id' => $id)); 
}); 

不會在佈線後的工作以同樣的方式?它在我所有的其他頁面上都有。

它如何通過這些錯誤以及正確的GET變量來顯示正確的內容?

回答

0

經過幾天的努力,我找到了解決方案。我第一次發現的地圖(),改變了第一線......

$app->map('/checklist/:Id', function($Id) use($app) { 

和結束......

})->via('GET', 'POST')->name('checklist'); 

所以現在的路線呈現相同不管它是從未來後或get 。然後我將表單指向此命名路由...

<form action="{{ urlFor('checklist', {Id: Id}) }}" class="form" method="post"> 

並移動此路由中的所有後邏輯。由於沒有必要驗證請求是否不是我使用的帖子...

if($app->request->isPost()) { 

並將驗證碼放在裏面。做一個表單提交後刷新頁面將重新提交表單,所以如果驗證通過我加入...

return $app->response->redirect($app->urlFor('checklist', array(
      'Id' => $Id 
     ))); 

我所要做的就是通過錯誤的模板,它似乎是完美的工作。

0

這對我來說很好。

return $this->renderer->render('myTemplate.php', array('id' => $id));

希望它爲你工作。

+0

你能解釋一下實現嗎? – user2530671

+0

我認爲你的問題是在渲染部分,你沒有正確渲染視圖。 通過調用'renderer-> render',我認爲這是做到這一點的方法。對不起,我無法真正解釋原因,但對我有用。並且在視圖中,我只是做了一個'if(isset($ id)'並且它可以工作。 再次,我很抱歉我不知道如何解釋它,我是新來的自己 –

相關問題