2

我正在为一个简单的应用程序使用Klein php 路由

该文档可以使用该库,但是不擅长如何实现视图

例如,我想在成功/错误/警告等上显示一条闪光消息

我了解 klein 如何像文档中的此错误消息一样存储闪存

$klein->respond(function ($request, $response, $service, $app) use ($klein) {
    // Handle exceptions => flash the message and redirect to the referrer
    $klein->onError(function ($klein, $err_msg) {
        $klein->service()->flash($err_msg);
        $klein->service()->back();
    });

所以对于我的成功信息,我这样做了

$service->flash("Success", $type = 'success' );

但除了 $_SESSION __flash 上的 foreach 之外,我看不到如何在我看来实现这一点

我当然认为有一个渲染()或我缺少的东西......我的意思是否则为什么当我可以在会话中存储我自己的味精时调用所有这些,对我来说没有多大意义

无论如何,总是感谢任何帮助

4

1 回答 1

4

如果您查看最新版本的文档,则有一种方法Klein\ServiceProvider::flashes()

http://chriso.github.io/klein.php/docs/classes/Klein.ServiceProvider.html#method_flashes

文档说它检索并清除所有闪存消息,或给定类型的所有闪存消息。

不要与 混淆Klein\ServiceProvider::flash(),后者会添加一条消息:

http://chriso.github.io/klein.php/docs/classes/Klein.ServiceProvider.html#method_flashes

这是来源:

https://github.com/chriso/klein.php/blob/master/src/Klein/ServiceProvider.php#L179

看起来它返回了一个按类型分组的 flash 数组,因此您可以 foreach 并回显它们。如果您使用的是 Klein 模板系统(在您的情况下,您将使用 渲染模板$klein->service->render($myTemplateName)),那么您可以从模板中调用 ServiceProvider 作为 $this.

所以在你的模板中,你会有类似的东西:

<? foreach($this->flashes() as $type=>$messages): ?>
    <? foreach($messages as $msg): ?>
        <div class="alert alert-<?= $type ?>"><?= $msg ?></div>
    <? endforeach; ?>
<? endforeach; ?>

显然,您不必使用备用控制结构语法,但我喜欢在我的模板中使用它。它是我工作的一家开发商店的编码标准的一部分,我将其作为自己的。

只是一个抬头。这些文档似乎代表了 dev-master 中的代码,而不是他们告诉您在 GitHub 页面上使用的 2.0.x 分支。从那时起,似乎有很多代码被转移了(至少我们知道它没有被放弃,对吧?)。我发现 dev-master 分支的损坏要少得多。

于 2014-01-17T20:13:08.420 回答