【问题标题】:In Slim, how do I pass a GET variable to render在 Slim 中,我如何传递一个 GET 变量来渲染
【发布时间】:2016-09-10 02:54:45
【问题描述】:

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

【问题讨论】:

    标签: php render slim


    【解决方案1】:

    经过几天的努力,我找到了解决方案。我首先发现了 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
            )));
    

    我所要做的就是将错误传递给模板,它似乎工作得很好。

    【讨论】:

      【解决方案2】:

      这对我来说很好。

      return $this-&gt;renderer-&gt;render('myTemplate.php', array('id' =&gt; $id));

      希望它对你有用。

      【讨论】:

      • 你能解释一下实现吗?
      • 我认为您的问题出在渲染部分,您没有正确渲染视图。通过调用renderer-&gt;render,我认为这是这样做的方法。对不起,我无法真正解释为什么,但它对我有用。在视图中,我只是做一个if(isset($id),它就可以工作。再次,对不起,我不知道如何解释,我是减肥的新手
      猜你喜欢
      • 1970-01-01
      • 2019-08-13
      • 1970-01-01
      • 2016-05-17
      • 1970-01-01
      • 2021-10-03
      • 2016-09-28
      • 2018-02-02
      • 1970-01-01
      相关资源
      最近更新 更多