Pregunta

I'm trying to use JEditable plugin in my Symfony2 application. PYS entity is a a films and TV shows entity; then I've got Usuario and Critica entities. I want to manage the user's critics with the plugin. I've analyzed more and more examples, but I can not get it to work. The value (in this case the title of critic) is update in the template but not in the db; when I refresh the browser the old value appears.

THE ERROR:

enter image description here

This is my JS:

$('.edit').editable(function(value, settings) { 
        var data = {};
        data[this.id] = value;
        console.log(path);
        console.log(data);
        $.post(path, data);
            return(value);
    }, {
        indicator : 'Saving...',
        tooltip   : 'Click to edit...'
    });

This is the route:

critica_ajax:
    locales: { es: "/gestion-critica/{pysStr}/", en: "/manage-critic/{pysStr}/" }
    defaults: { _controller: UsuarioBundle:Default:gestionarCritica }

This is the controller:

public function gestionarCriticaAction($pysStr)
{
    $em = $this->getDoctrine()->getManager();
    $pys = $em->getRepository('PYSBundle:Pys')->findPys($pysStr);
    $usuario = $this->get('security.context')->getToken()->getUser();
    $critica = $em->getRepository('UsuarioBundle:Usuario')->findCritica($usuario, $pys);

    if(!$critica) 
    {
        $critica = new Critica($usuario, $pys);
    }

    $criTitulo = $this->request->get('value');
    $critica->setCriTitulo($criTitulo);

    $critica->setCriContenido($criContenido);
    $critica->setCriFecha(new \DateTime("now"));

    $em->persist($critica); 

    $em->flush();

    return new Response($criTitulo);
}

The Twig template:

<h2 class="edit">{{ critica.criTitulo }}</h2>
<script>
    var path = "{{ path('critica_ajax', { 'pysStr': pelicula.pysStr}) }}";
</script>

EDIT (The Symfony's return)

Notice: Undefined property: Filmboot\UsuarioBundle\Controller\DefaultController::$request
in C:\Programming\xampp\htdocs\filmboot\src\Filmboot\UsuarioBundle\Controller\DefaultController.php line 236

THIS IS THE LINE 236: $criTitulo = $this->request->get('value');

at ErrorHandler ->handle ('8', 'Undefined property: Filmboot\UsuarioBundle\Controller\DefaultController::$request', 'C:\Programming\xampp\htdocs\filmboot\src\Filmboot\UsuarioBundle\Controller\DefaultController.php', '236', array('pysStr' => 'machete', 'em' => object(EntityManager), 'pys' => object(Pys), 'usuario' => object(Usuario), 'critica' => object(Critica))) 
    in C:\Programming\xampp\htdocs\filmboot\src\Filmboot\UsuarioBundle\Controller\DefaultController.php at line 236   +
    at DefaultController ->gestionarCriticaAction ('machete')
    at call_user_func_array (array(object(DefaultController), 'gestionarCriticaAction'), array('machete')) 
    in C:\Programming\xampp\htdocs\filmboot\app\bootstrap.php.cache at line 1003   +
    at HttpKernel ->handleRaw (object(Request), '1') 
    in C:\Programming\xampp\htdocs\filmboot\app\bootstrap.php.cache at line 977   +
    at HttpKernel ->handle (object(Request), '1', true) 
    in C:\Programming\xampp\htdocs\filmboot\app\bootstrap.php.cache at line 1103   +
    at ContainerAwareHttpKernel ->handle (object(Request), '1', true) 
    in C:\Programming\xampp\htdocs\filmboot\app\bootstrap.php.cache at line 413   +
    at Kernel ->handle (object(Request)) 
    in C:\Programming\xampp\htdocs\filmboot\web\app_dev.php at line 26   +
¿Fue útil?

Solución

You need to get the request like this :

$request = $this->getRequest();

instead of

$request = $this->request;

the request is returned using a method its not a class property

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top