2016-05-13 12 views
0

私はしばらくの間Slimで作業していました。私はまだバージョン2になっています。これまでのところすべてがうまくいっていますが、少しぶつかりました。 URLの末尾にあるGET変数に基づいてコンテンツを表示するページがあります。 urlは... GETルートのスリムでは、レンダリングするためにGET変数を渡すにはどうすればいいですか?

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

最初の行は次のようになります...以下のようになります。

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

それはこのように終わる...

})->name('checklist'); 

そのIdパラメータは、私がページに引っ張っている情報を制御し、すべてがうまくいっていますが、今ではコンタクトフォームとそれにいくつかの検証を追加しました。私はDBに書き込んで、新しいコンテンツを大丈夫にしています。この問題は、ページにエラーを返すときに発生します。現在は次のようになっています...

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

これは機能しません。ページは空白です。それが返すURLは

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

はポストルートと同じ方法で、その仕事ではないでしょう...ショーをレンダリングするためのドキュメント...

http://localhost/trailcache.com/checklist 

のですか?それは他のすべてのページにあります。

正しいGET変数と一緒にこれらのエラーを受け取り、正しい内容が表示されるようにするにはどうすればよいですか?

答えて

0

これに数日間苦労して解決策が見つかりました。私が最初に(マップを発見した)ので、今のルートは、それがポストから来るかどうか、同じをレンダリングするか、取得

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

と最後まで...

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

...最初の行への変更しました。私はこの名前のルートにフォームを指摘しました...

このルート内のすべてのポストロジックを移動しました。

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)'を行い、それが動作する。 再び、私はそれを説明する方法がわからない、私は自分自身をスリムに新しい –

関連する問題