在Slim中,如何传递GET变量进行渲染

时间:2016-05-13 19:30:08

标签: php render slim

我只与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变量一起传递,以便显示正确的内容?

2 个答案:

答案 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
        )));

我所要做的就是将错误传递给模板,它似乎完美无缺。