geçerli kullanıcı giriş yapmış olmak için kernel.controller
olay şöyle: Sonra
<service id="your_app.listener.before_controller" class="App\CoreBundle\EventListener\BeforeControllerListener" scope="request">
<tag name="kernel.event_listener" event="kernel.controller" method="onKernelController"/>
<argument type="service" id="security.context"/>
</service>
yılında senin BeforeControllerListener
bunu eğer olursa, sen arayüzünden bir yöntemini çağırın ve sn geçecek bir arabirim uygulayan olmadığını görmek için denetleyiciye kontrol edecek Üreme bağlamı. Sonra
<?php
namespace App\CoreBundle\EventListener;
use Symfony\Component\HttpKernel\Event\FilterControllerEvent;
use Symfony\Component\Security\Core\SecurityContextInterface;
use App\CoreBundle\Model\InitializableControllerInterface;
/**
* @author Matt Drollette <[email protected]>
*/
class BeforeControllerListener
{
protected $security_context;
public function __construct(SecurityContextInterface $security_context)
{
$this->security_context = $security_context;
}
public function onKernelController(FilterControllerEvent $event)
{
$controller = $event->getController();
if (!is_array($controller)) {
// not a object but a different kind of callable. Do nothing
return;
}
$controllerObject = $controller[0];
// skip initializing for exceptions
if ($controllerObject instanceof ExceptionController) {
return;
}
if ($controllerObject instanceof InitializableControllerInterface) {
// this method is the one that is part of the interface.
$controllerObject->initialize($event->getRequest(), $this->security_context);
}
}
}
, bunu gibi kullanıcıyı sadece o arabirimini uygulayacak her zaman kullanılabilir kullanıcı var ve ayarlamak istediğiniz denetleyicileri:
use App\CoreBundle\Model\InitializableControllerInterface;
class DefaultController implements InitializableControllerInterface
{
/**
* Current user.
*
* @var User
*/
private $user;
/**
* {@inheritdoc}
*/
public function initialize(Request $request, SecurityContextInterface $security_context)
{
$this->user = $security_context->getToken()->getUser();
}
// ....
}
arayüzü
namespace App\CoreBundle\Model;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Security\Core\SecurityContextInterface;
interface InitializableControllerInterface
{
public function initialize(Request $request, SecurityContextInterface $security_context);
}
başka bir şey değildir buna
birisi yazma yolunu biliyor beri
çalışma olmalı yaml yapılandırmak? yaml kullanıyoruz ve 'argümanı' nasıl ekleyeceğimi bilmiyorum. Bunu okuduğum gibi: http://symfony.com/doc/current/cookbook/service_container/event_listener.html de hiçbir yardım almadan açıkçası – Toskan
@Toskan gibi bir şey yapabilirsiniz: 'arguments: [" @em "," @ some_service "]' – takeit
app.listener.constructor_listener: sınıfı: AppBundle \ EventListener \ ConstructorListener kapsamı: istek argümanlar: - {türü: hizmet, id: security.context} etiketler: - {name: kernel.event_listener , olay: kernel.controller, yöntem: onKernelController} http://pastebin.com/NTySb68a – r4ccoon