AJAX ile bir kullanıcı kaydettirmeye çalışıyorum. Sf2: FOS UserBundle: kayıt AJAX
Ben yüzden yapılmış bir AJAX isteği ama beni tatmin etmiyor benim istemci tarafında tepki bilmek olduğunu çalışıyorumFOSUserEvents::REGISTRATION_SUCCESS
bir olay dinleyicisi yarattı.
Burada benim olay dinleyicim, gönderilen yanıtın bir test olduğunu unutmayın, bu nedenle "başka" bir koşul olmamalıdır.
<?php
namespace SE\AppBundle\EventListener;
use FOS\UserBundle\FOSUserEvents;
use FOS\UserBundle\Event\FormEvent;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpFoundation\RequestStack;
/**
* Ajax listener on FOS UserBundle registration
*/
class RegistrationListener implements EventSubscriberInterface
{
private $router;
public function __construct(RequestStack $RequestStack)
{
$this->requestStack = $RequestStack;
}
/**
* {@inheritDoc}
*/
public static function getSubscribedEvents()
{
return array(
FOSUserEvents::REGISTRATION_SUCCESS => 'onRegistrationSuccess'
);
}
public function onRegistrationSuccess()
{
$request = $this->requestStack->getCurrentRequest();
if ($request->isXmlHttpRequest()) {
$array = array('success' => true); // data to return via JSON
$response = new Response(json_encode($array));
$response->headers->set('Content-Type', 'application/json');
return $response;
}
else{
$array = array('success' => false); // data to return via JSON
$response = new Response(json_encode($array));
$response->headers->set('Content-Type', 'application/json');
return $response;
}
}
}
services.yml
se.app.listener.registration:
class: SE\AppBundle\EventListener\RegistrationListener
arguments: ["@request_stack"]
tags:
- { name: kernel.event_subscriber }
javascript:
// Submit the request
$.ajax({
type : 'POST',
url : url,
data : data,
success : function(data, status, object) {
console.log('success');
console.log(data);
},
error: function(data, status, object){
console.log('error');
console.log(data);
}
});
Öncelikle garip şey hata durumunda gitmesidir.
console.log
(veri) kayıt başarı sayfanın DOM döndürülür:
...
<p>Congrats [email protected], your account is now activated.</p>
...
Yani bu mantık burada olmalı mı ya da denetleyicisi geçersiz gerekir? Neyi yanlış yapıyorum?
Awesome! Bu yüzden bir olay dinleyicisini bu yöntemi geçersiz kılmaktan daha iyi kullanmak daha iyi değil mi? Fos kullanıcı etkinliklerinden birinde de form hatalarını yakalayabilecek misiniz? – Brieuc
Düzenlememe bakıyorum :), Ve tamamen olaylara bağlı, sanırım REGISTRATION_FAILURE etkinliği yok, bu durumda bu yöntemi geçersiz kılmanız gerekebilir. – chalasr
Açık cevap için teşekkür ederiz. – Brieuc