我正在尝试将我网站的代码从Slim v2升级到V4。我不是一个铁杆程序员,所以我面临着一些问题。在SlimV2中,我有一些中间件,可以在路由代码执行之前为Twig视图分配参数。现在我正在尝试用SlimV4来实现同样的功能,但没有成功。
所以这是一个测试代码:
use Psr\Http\Message\ResponseInterface as Response;
use Psr\Http\Message\ServerRequestInterface as Request;
use Psr\Http\Server\RequestHandlerInterface as RequestHandler;
use Slim\Factory\AppFactory;
use Slim\Views\Twig;
use Slim\Routing\RouteContext;
require 'vendor/autoload.php';
require 'config.php';
lib\Cookie::init();
$container = new \DI\Container();
$container->set('view', function($container) {
return Twig::create(__DIR__ . '/views');
});
$container->set('flash', function ($container) {
return new \Slim\Flash\Messages();
});
$container->get('view')->getEnvironment()->addGlobal('flash', $container->get('flash'));
AppFactory::setContainer($container);
$app = AppFactory::create();
$app->addErrorMiddleware(true, false, false);
$fb = new Facebook\Facebook([
'app_id' => '...',
'app_secret' => '...',
'default_graph_version' => '...',
]);
$beforeMiddleware = function (Request $request, RequestHandler $handler) use ($fb) {
$response = $handler->handle($request);
if (!isset($_SESSION['fbuser'])) {
$helper = $fb->getRedirectLoginHelper();
$permissions = ['email'];
$loginUrl = $helper->getLoginUrl('...', $permissions);
$this->get('view')->offsetSet('fbloginurl', $loginUrl);
}
else {
$this->get('view')->offsetSet('fbuser', $_SESSION['fbuser']);
}
$uri = $request->getUri();
$this->get('view')->offsetSet('currenturl', $uri);
return $response;
};
$app->add($beforeMiddleware);
$app->get('/test', function (Request $request, Response $response, $args) {
$oViewParams = new \lib\ViewParams("home", "", "", "", "");
$oProfession = new \models\Profession();
$oBlogPost = new models\BlogPost();
$oBlogTopic = new models\BlogTopic();
$professions = $oProfession->getProfessionsWithLimit(14);
$posts = $oBlogPost->getMainPagePosts();
echo $this->get('view')->offsetGet('fbloginurl');
$params = array('professions' => $professions,
'posts' => $posts,
'viewp' => $oViewParams->getMassParams());
return $this->get('view')->render($response, 'index.html', $params);
});
$app->run();
当我在中间件中使用echo$this->get('view')->offsetget('fbloginurl');
时,它就会出现。当我在路线内使用相同的东西时,什么也没有出现...
中间件(或您的路由)链中的下一个代码将在您有...
$response = $handler->handle($request);
因为这是在设置要在twig中使用的任何值之前,所以它们还没有设置。在设置这些值后移动上面的行,然后这些值就可以用于代码的其余部分了。
问题内容: 在Swift中,我尝试执行以下操作: Xcode 在方法中在线上报告错误。 为什么?如果将结构更改为类,则不会出错。 问题答案: 如果要修改结构的属性,请将该函数标记为mutating。
问题内容: 谁能解释这个原因 它打印零。 问题答案: 是后增量(JLS 15.14.2 )。它增加,但是表达式的结果是增加 之前 的值。将该值重新分配为有效会使值保持不变。 分解成这样: 很容易看到这种情况的原因。现在,我们改为用代替左侧。右边的值仍然是,这就是为什么要插入摘要。
问题内容: 可以在Twig解码JSON吗?谷歌搜索似乎对此没有任何帮助。在Twig中解码JSON没有意义吗? 我正在尝试访问Symfony2的实体字段类型(Entity FieldType)上的2个实体属性。 实体类中的某处: 并采用以下形式: 之后,我希望在Twig … 问题答案: 如果您伸出Twig,那很容易。 首先,创建一个包含扩展名的类: 然后,在您的Services.xml文件中注册该类
问题内容: 编译代码时,收到以下错误消息,不确定为什么会发生。有人可以帮我指出原因吗?先感谢您。 不能在分配中使用px.InitializePaxosInstance(val)(类型PaxosInstance)作为* PaxosInstance类型 } 问题答案: 您的地图期望指向()的指针,但是您正在向其传递结构值。更改您的初始化函数以返回一个指针。 现在,它返回一个指针。您可以使用和获取(如果
我需要从表单接收的值创建一个DateTime。问题是这个值像一个字符串一样被接收:“2016-10-10T08:29:06.959Z”,我需要接收像没有引号,因为如果我用引号接收,我就有下一个错误: DateTime::__construct():无法解析位置0()的时间字符串("2016-10-14T22:00:00.000Z"):意外字符 当我尝试将值转换为DateTime时,使用: 如果我尝
实际上,我正在尝试创建一个应用程序,有n个多媒体文件,其中包括图像和视频。我的应用程序大小大约为,我的资产大小大约为。当我在普通设备上加载应用程序时,我们没有遇到任何问题,但在具有的设备上,如等,应用程序在过程中崩溃,错误是“内存不足”。我已经用这个生成了错误报告。我也尝试过位图工厂。同时,我使用了数组的视频方法。 有谁能帮助解决这个问题吗? 致命异常:主进程:com.example.we.app