在Slim中,我如何传递一个GET变量来呈现
问题描述:
我一直只在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变量来显示正确的内容?
答
经过几天的努力,我找到了解决方案。我第一次发现的地图(),改变了第一线......
$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
)));
我所要做的就是通过错误的模板,它似乎是完美的工作。
答
这对我来说很好。
return $this->renderer->render('myTemplate.php', array('id' => $id));
希望它为你工作。
你能解释一下实现吗? – user2530671
我认为你的问题是在渲染部分,你没有正确渲染视图。 通过调用'renderer-> render',我认为这是做到这一点的方法。对不起,我无法真正解释原因,但对我有用。并且在视图中,我只是做了一个'if(isset($ id)'并且它可以工作。 再次,我很抱歉我不知道如何解释它,我是新来的自己 –