无论出于何种原因,Sessions不能在我的Silex-app中运行.我在php.ini中设置了error_reporting,E_ALL | E_STRICT并显示和记录错误.没什么好看的.但由于某种原因,没有创建会话且没有文件/project-root/tmp/sessions/(当使用默认的session.save_path时也没有).切换到PdoSessionStorage,以排除文件系统的读/写权限问题,也没有带来任何结果.我也试过之间切换$app['session'],$request->getSession()并$app['request']->getSession()无济于事.
我不知道在哪里寻找问题......
这是我写的一个非常简单的测试应用程序(use省略了节省空间).基本上这个测试显示了我在实际应用中尝试实现的功能.我想在会话中存储一个数组.在$app->before()我检查,如果该值设置,然后将它传递给树枝被显示,例如,登录信息:You are logged in as {{ user.name }}:
$app = new Application;
$app['debug'] = true;
$app->register(new SessionServiceProvider, array(
'session.storage.save_path' => dirname(__DIR__) . '/tmp/sessions'
));
$app->register(new TwigServiceProvider, array(
'twig.path' => __DIR__ . '/views'
));
$app->before(function (Request $request) use ($app) {
// if ($app['debug'] == true) {
// $request->getSession()->set('test', array('key' => 'value'));
// }
if ($request->hasPreviousSession() && $request->getSession()->has('test')) {
$test = $request->getSession()->get('test'); …Run Code Online (Sandbox Code Playgroud) 这个问题与Symfony 2没有严格的关系,但是当我使用Symfony 2组件并且稍后可能使用Symfony\Component\DependencyInjection\Container作为DI-Container时,它可能是相关的.
我目前正在使用Symfony 2中的组件构建一个小型库,例如HttpFoundation,Validator,Yaml.我的域服务都扩展了一个基本的AbstractService,只提供了Doctrine\ORM\EntityManager和Symfony\Component\Validator\Validator,它们通过构造函数注入,如下所示:
abstract class AbstractService
{
protected $em;
protected $validator;
/**
* @param Doctrine\ORM\EntityManager $em
* @param Symfony\Component\Validator\Validator $validator
*/
public function __construct(EntityManager $em, Validator $validator)
{
$this->em = $em;
$this->validator = $validator;
}
}
Run Code Online (Sandbox Code Playgroud)
扩展此AbstractService的Service类现在可能需要注入其他组件,例如Symfony\Component\HttpFoundation\Session.从我这样做:
class MyService extends AbstractService
{
/**
* @var Symfony\Component\HttpFoundation\Session
*/
protected $session;
/**
* @param Symfony\Component\HttpFoundation\Session $session
* @param Doctrine\ORM\EntityManager $em
* @param Symfony\Component\Validator\Validator $validator
*/
public function __construct(Session $session, EntityManager $em, Validator $validator)
{
parent::__construct($em, $validator);
$this->session = $session;
} …Run Code Online (Sandbox Code Playgroud) 我试图添加一个本地项目A作为项目B的依赖项.使用git daemon我能够获取项目A作为依赖项,但require无法识别在项目A中的composer.json中定义的依赖项.我错过了什么?
项目A:
{
"name": "project/a",
"require": {
"monolog/monolog": "dev-master"
}
}
Run Code Online (Sandbox Code Playgroud)
项目B:
"repositories": [
{
"type": "vcs",
"url": "git://localhost/home/user/project-a"
}
],
"require": {
"project/a": "dev-master"
}
Run Code Online (Sandbox Code Playgroud)
结果(在项目B中):
vendor/
project/a
Run Code Online (Sandbox Code Playgroud)
预期:
vendor/
project/a
monolog/monolog
Run Code Online (Sandbox Code Playgroud)