har*_*K92 5 php symfony symfony-2.5
我试图实现密码编码服务,但似乎它不起作用,因为我得到"你已经请求了一个不存在的服务user_service"错误.
这是我的代码:
services:
user_service:
class: Morescreens\VideomanagerBundle\Service\UserService
arguments: ['@security.encoder_factory']
Run Code Online (Sandbox Code Playgroud)
imports:
- { resource: "@morescreensVideomanagerBundle/Resources/config/services.yml" }
Run Code Online (Sandbox Code Playgroud)
class UserService {
/**
* @var EncoderFactoryInterface
*/
private $encoderFactory;
public function __construct(EncoderFactoryInterface $encoderFactory)
{
$this->encoderFactory=$encoderFactory;
}
public function setEncodedPassword(User $user)
{
$encoder=$this->encoderFactory->getEncoder($user);
$password=$encoder->encodePassword($user->getPassword(),$user->getSalt());
$user->setPassword($password);
}
}
Run Code Online (Sandbox Code Playgroud)
$user=new User();
$user->setPassword('password');
$this->get('user_service')->setEncodedPassword($user);
Run Code Online (Sandbox Code Playgroud)
编辑:
我手动删除缓存文件夹,我的服务开始工作.
尝试查看你的src/{VendorName}/{BundleName} Bundle/DependencyInjection/{VendorName} {BundleName} Extension.php
此文件应加载您的服务定义,如下所示:
<?php
namespace Vendor\{BundleName}Bundle\DependencyInjection;
use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\Config\FileLocator;
use Symfony\Component\HttpKernel\DependencyInjection\Extension;
use Symfony\Component\DependencyInjection\Loader;
/**
* This is the class that loads and manages your bundle configuration
*
* To learn more see {@link http://symfony.com/doc/current/cookbook/bundles/extension.html}
*/
class Vendor{BundleName}Extension extends Extension
{
/**
* {@inheritDoc}
*/
public function load(array $configs, ContainerBuilder $container)
{
$configuration = new Configuration();
$config = $this->processConfiguration($configuration, $configs);
//Load our YAML resources
$loader = new Loader\YamlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config'));
$loader->load('services.yml');
}
}
Run Code Online (Sandbox Code Playgroud)
这会将服务定义加载src/{VendorName}/{BundleName}Bundle/Resources/config/services.yml到容器中.如果仍然无效,请尝试php app/console cache:clear.出于速度原因,symfony基本上会将您的所有服务(和其他配置文件)聚合到缓存文件中,因此不必每次都读取这些文件.实际缓存服务定义的文件位于:
具有容器服务定义的相关信息的文件是:
| 归档时间: |
|
| 查看次数: |
10422 次 |
| 最近记录: |