我只与Slim合作了一会儿。我还在第2版。到目前为止,一切都很顺利,但我遇到了一些障碍。我有一个页面,显示基于URL末尾的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 :(得分:1)
这对我很有用。
return $this->renderer->render('myTemplate.php', array('id' => $id));
希望它适合你。
答案 1 :(得分:0)
经过几天的努力,我找到了解决方案。我首先发现了map()并将第一行改为......
$app->map('/checklist/:Id', function($Id) use($app) {
结束......
})->via('GET', 'POST')->name('checklist');
所以现在路线呈现相同,无论是来自post还是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
)));
我所要做的就是将错误传递给模板,它似乎完美无缺。