第一个字段是评论家的标题,第二个字段是评论家的内容。当我在标题字段中写一些东西时,会自动在数据库中创建对象Critic。在这种情况下,我会在新行中添加新评论者,但在内容文件中,该值为null。在这种情况下,将显示一个确认对话框。
当出现确认对话框时,我该怎么做才能单击“确定”按钮,并且除了被重定向到新模板之外,还执行Controller的eliminarCriticaAction。
$('a').on('click', function(e) {
if( ! $('#criTitulo').val() || ! $('#criContenido').val() ) {
if ( ! $('#criTitulo').val() && $('#criContenido').val() ) {
if(! window.confirm( 'Falta el titulo' )) {
e.preventDefault();
}
}
else if ( ! $('#criContenido').val() && $('#criTitulo').val() ) {
return confirm('Falta el contenido');
}
}
});
删除控制器的动作:
public function eliminarCriticaAction($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)
{
throw new AccessDeniedException("No hay ninguna crítica que borrar");
}
$em->remove($critica);
$em->flush();
}
$('a').on('click', function(e) {
var titulo = $('#criTitulo').val(), contenido = $('#criContenido').val();
console.log(titulo);
console.log(contenido);
if ( ( titulo && !contenido ) || ( !titulo && contenido ) ) {
e.preventDefault();
console.log('Link clicked !');
if (window.confirm( 'Falta el titulo' )) {
$.get(Routing.generate('eliminar_critica.' + $('html').attr('lang'), { "_locale": $('html').attr('lang'), "pysStr": $('section').attr('pelicula') }));
window.location.href = $(e.target).attr('href');
}
}
});
我不清楚到您的删除控制器的路由是什么。我将假定路由名称为“ my_pys”的“ / Pys / {pysStr}”。另外,您当前的“ pysStr”应该在树枝模板中作为变量提供。假设您在显示控制器中输入:
'currentPysStr' => $pysStr (put this in the render method are argument)
$('a').on('click', function(e) {
if( ! $('#criTitulo').val() || ! $('#criContenido').val() ) {
if ( ! $('#criTitulo').val() && $('#criContenido').val() ) {
if(! window.confirm( 'Falta el titulo' )) {
e.preventDefault();
} else {
$.get({{ path('my_pys', {'pysStr': currentPysStr}) }})
}
}
else if ( ! $('#criContenido').val() && $('#criTitulo').val() ) {
return confirm('Falta el contenido');
}
}
});
然后,在删除控制器中,您将拥有当前的PysStr,只有在确认对话框中按“确定”时,才会调用此控制器。
与您在订单问题中一样,您可以选择将该脚本放在树枝模板中还是使用全局变量。(https://stackoverflow.com/questions/18035337/translate-the-jeditable-plugins-attributes/18035436#18035436)
编辑:(聊天后)
$('a').on('click', function(e) {
var titulo = $('#criTitulo').val(),
contenido = $('#criContenido').val();
console.log(titulo);
console.log(contenido);
// Requested: XOR
// One of the values must be set, the other one must not be set
if ( ( titulo && !contenido ) || ( !titulo && contenido ) ) {
e.preventDefault();
console.log('Link clicked !');
if (window.confirm( 'Falta el titulo' )) {
var ajax;
var url = Routing.generate('eliminar_critica.' + $('html').attr('lang'), { "_locale": $('html').attr('lang'), "pysStr": $('section').attr('pelicula') });
console.log(url); // This is just here for debugging purposes
ajax = $.get(url);
ajax.done(function() {
window.location.href = $(e.target).attr('href');
});
}
}
});
放置window.location.href
以done()
确保在刷新页面之前发出请求
eliminarCriticaAction
应该给出一个响应,表示一切都继续进行(2 **)。204是这样的:
return new response('', 204); // 204: No Content
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句