2016-05-13 235 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)'并且它可以工作。 再次,我很抱歉我不知道如何解释它,我是新来的自己 –