首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用超薄框架3实现flash消息

如何使用超薄框架3实现flash消息
EN

Stack Overflow用户
提问于 2017-04-23 16:10:43
回答 1查看 808关注 0票数 1

我有一个问题,使用超薄/闪存/消息,做一个闪光消息。我有这个错误

代码语言:javascript
复制
Fatal error:
Uncaught DI\NotFoundException: No entry or class found for 'Slim\Flash' in C:\laragon\www\cart\vendor\php-di\php-di\src\DI\Container.php:119

Stack trace:
#0 C:\laragon\www\cart\app\container.php(52): DI\Container->get('Slim\\Flash')
#1 [internal function]: DI\Definition\Source\DefinitionFile->{closure}(Object(DI\Container)) #2 C:\laragon\www\cart\vendor\php-di\invoker\src\Invoker.php(82): call_user_func_array(Object(Closure), Array) 
#3 C:\laragon\www\cart\vendor\php-di\php-di\src\DI\Definition\Resolver\FactoryResolver.php(81): Invoker\Invoker->call(Object(Closure), Array)
#4 C:\laragon\www\cart\vendor\php-di\php-di\src\DI\Definition\Resolver\ResolverDispatcher.php(58): DI\Definition\Resolver\FactoryResolver->resolve(Object(DI\Definition\FactoryDefinition), Array) 
#5 C:\laragon\www\cart\vendor\php-di\php-di\src\DI\Container.php(285): DI\Definition\Resolver\ResolverDispatcher->resolve(Object(DI\Definition\FactoryDefinition), Array)
#6 C:\laragon\www\cart\vendor\php-di\php-di\src\DI\Container.php(122): DI\Contai in C:\laragon\www\cart\vendor\php-di\php-di\src\DI\Container.php on line 119

在引导程序/app.php中

$container->set('flash', function($container) { return new \Slim\Flash\Messages($container); });

在container.php中

代码语言:javascript
复制
Twig::class => function (ContainerInterface $c) {
    $twig = Factory::getEngine();

    $twig->addExtension(new TwigExtension(
            $c->get('router'),
            $c->get('request')->getUri()
    ));

    $twig->getEnvironment()->addGlobal('basket', $c->get(Basket::class));
    $twig->getEnvironment()->addGlobal('auth', $c->get(Auth::class));
    $twig->getEnvironment()->addGlobal('user', $c->get(Customer::class));

    $twig->getEnvironment()->addGlobal('flash', $c->get(Flash::class));         

    return $twig;   
},
EN

回答 1

Stack Overflow用户

发布于 2017-05-04 14:44:02

$twig->getEnvironment()->addGlobal('flash', $c->get(Flash::class));意味着您要在容器中查找一个名为Slim\Flash的密钥,但您使用密钥flash注册了它。

因此,更改:

代码语言:javascript
复制
$twig->getEnvironment()->addGlobal('flash', $c->get(Flash::class));

代码语言:javascript
复制
$twig->getEnvironment()->addGlobal('flash', $c->get('flash'));

或者,您可以在任何地方使用完全限定的类名:

app.php:

代码语言:javascript
复制
use Slim\Flash\Messages as Flash;

$container->set(Flash::class, function($container) {
    return new Flash($container);
});

并将此代码添加到container.php的顶部:

代码语言:javascript
复制
use Slim\Flash\Messages as Flash;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43568832

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档