我在一周前开始了一个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我缺少什么?
先谢谢你=)