Silex SessionProvider没有在我的班级里面设置

时间:2015-10-08 23:16:22

标签: php session silex

我在一周前开始了一个Silex项目,但仍然在服务容器中遇到了一些问题。虽然很简单。

以下是我的情况:

$app->post('/', function (Request $request) use ($app) {

$success = (new \Malendar\Application\Service\User\LoginUserService($app['user_repository'], $app['session']))->execute($request);
if ($success) {
    return $app->redirect($app["url_generator"]->generate("calendar"));
} else {
    return new Response($app['twig']->render('login.html', ['formError' => true]), 400);
}});

我创建了一个LoginUserService类,它给了我的用户资源库和会话服务我能够登录用户,这意味着,与数据库进行比较并检查用户名和密码是否在系统中。这很有效,但问题来自会话提供商。这是类代码:

class LoginUserService implements ApplicationServiceInterface
{
    private $userRepository;
    private $session;

    public function __construct(UserCaseRepository $userRepository, Session $session)
    {
        $this->userRepository = $userRepository;
        $this->session = $session;
    }

    public function execute($request = null)
    {
        // TODO: Implement execute() method.
        $userName = $request->get('user');
        $password = $request->get('password');
        $user = $this->userRepository->findByUsername($userName);
        var_dump($user);
        if (!empty($user) && $user->validate($password)) {
            $this->session->start();
            $this->session->set('id', $user->getUserId());
            $this->session->set('username', $user->getName());
            $this->session->set('email', $user->getEmail());
            $this->session->save();
            return true;
        } else {
            return false;
        }
    }
}

$ this->会话,我认为应用程序['会话']不设置用户名,电子邮件和身份证的值,它们保持为空,我可以向您保证所有数据都已提供。

另一方面,如果我在课外进行,它可以正常工作并设置用户名:

$app->post('/', function (Request $request) use ($app) {

    $success = (new \Malendar\Application\Service\User\LoginUserService($app['user_repository'], $app['session']))->execute($request);
    $app['session']->set('username', 'Pedro');

但当然它想继续使用我的loginService我缺少什么?

先谢谢你=)

0 个答案:

没有答案