Javascript 当用户返回页面时保存最后一个表过滤器查询
我是Symfony的新手。我有一个包含5个过滤器的表,我希望在用户再次返回到该页时保留它们的状态(保存最后一个查询),因为过滤器被重置了 我一直在读关于如何做的书,因为我不知道。我读过关于html web存储,关于会话变量,但我找不到任何关于如何执行的示例,请有人解释一下哪种方法是最好的,以及如何应用 这是我在控制器上的filterAction:Javascript 当用户返回页面时保存最后一个表过滤器查询,javascript,symfony,Javascript,Symfony,我是Symfony的新手。我有一个包含5个过滤器的表,我希望在用户再次返回到该页时保留它们的状态(保存最后一个查询),因为过滤器被重置了 我一直在读关于如何做的书,因为我不知道。我读过关于html web存储,关于会话变量,但我找不到任何关于如何执行的示例,请有人解释一下哪种方法是最好的,以及如何应用 这是我在控制器上的filterAction: /** * @Route("/filterFichas/", name="filterFichas") */ public function fi
/**
* @Route("/filterFichas/", name="filterFichas")
*/
public function filterFichasAction(Request $request)
{
$em = $this->getDoctrine()->getManager();
$txtColectivo = $request->request->get('colectivo');
$txtRol = $request->request->get('rol');
$txtEstadosObjetivos = $request->request->get('EstadosObjetivos');
$txtEstadosFichas = $request->request->get('EstadosFichas');
$idPeriodo = $request->request->get('periodo');
$periodo = $em->getRepository('GOCModelBundle:Periodo')->findOneBy(array('id' => $idPeriodo));
$respuesta = array();
foreach ($periodo->getFicha() as $ficha){
$flag = true;
if($txtColectivo != "todas"){
$colectivo= $em->getRepository('GOCModelBundle:Colectivo')->findOneBy(array('nombre' => $txtColectivo ));
if($ficha->getUser()->getColectivo() != $colectivo){
$flag = false;
}
}
if($txtRol != "todas"){
$rol = $em->getRepository('GOCModelBundle:Rol')->findOneBy(array('rol' => $txtRol ));
if($ficha->getUser()->getRol() != $rol){
$flag = false;
}
}
if($txtEstadosFichas != "todas"){
if(count($ficha->getFichacontenidoestado()) > 0){
$estadoContenido = $em->getRepository('GOCModelBundle:Estadocontenido')->findOneBy(array('descripcion' => $txtEstadosFichas ));
if($ficha->getFichacontenidoestado()[count($ficha->getFichacontenidoestado()) - 1]->getEstadocontenido() != $estadoContenido){
$flag = false;
}
}else{
$flag = false;
}
}
if($txtEstadosObjetivos != "todas"){
if(count($ficha->getFichaobjetivosestado()) > 0){
$estadoObjetivos = $em->getRepository('GOCModelBundle:Estadobjetivo')->findOneBy(array('descripcion' => $txtEstadosObjetivos ));
if($ficha->getFichaobjetivosestado()[count($ficha->getFichaobjetivosestado()) - 1]->getEstadobjetivo() != $estadoObjetivos){
$flag = false;
}
}else{
$flag = false;
}
}
if($flag){
$respTemp = array(
'user' => $ficha->getUser(),
'ficha' => $ficha,
);
array_push($respuesta, $respTemp);
}
}
return $this->render('GOCFichasBundle:Default:fichasFilter.html.twig', array(
'usr' => $respuesta,
));
}
下面是我对过滤器的js操作:
function filterFichas() {
$.blockUI({ message: '<h4><img src="{{ asset('assets/global/plugins/cubeportfolio/cubeportfolio/img/cbp-loading.gif') }}" /> Cargando datos, por favor espere...</h4>' });
var idPeriodo = $('#selectPeriodoActual').val();
$( "#tabla" ).load( "{{ path('filterFichas')}}",
{
colectivo:$( "#selectColectivo" ).val(),
rol: $( "#selectRol" ).val(),
EstadosObjetivos: $( "#selectEstadoObjetivos" ).val(),
EstadosFichas: $( "#selectEstadoFichas" ).val(),
periodo: idPeriodo
},
function() {
$.unblockUI();
});
}
函数filterFichas(){
$.blockUI({消息:'Cargando datos,por-provour-espere…});
var idPeriodo=$('#selectPeriodoActual').val();
$(“#tabla”).load(“{path('filterFichas')}}”,
{
collectivo:$(“#选择collectivo”).val(),
rol:$(“#selectRol”).val(),
ESTADOOBJETIVOS:$(“#选择ESTADOOBJETIVOS”).val(),
EstadosFichas:$(“#选择EstadosFichas”).val(),
periodo:idPeriodo
},
函数(){
$.unbui();
});
}
当用户返回具有最后一个筛选表时,如何保存用户执行的最后一个筛选操作 最简单的方法是使用,如果继承了BaseController,则可以在控制器内部轻松访问 您可以使用
$this->get('session')
检索控制器内的会话服务。之后,您可以用来与之交互的界面与您正在使用的请求
对象的参数包几乎相同(get
和set
方法具有相同的签名)
因此,对于处理参数,您必须首先检查它是否已经在$request->query
参数包中。如果没有,请在会话中查找一个值,如果该值仍然不存在,则返回默认值(在您的情况下,可能是null
)
您可以利用的第二个可选参数,该参数定义了一个默认值,以防在一行中找不到可以执行此操作的内容。之后,您可以将检索到的值保存在会话中,以便用户稍后回来时可以检索到它
$session = $this->get('session');
...
$myParam = $request->request->get('myParam', $session->get('myParam'));
if($myParam !== null)
{
$session->set('myParam', $myParam);
}
这样,如果请求和会话中都未定义myParam
,则$myParam
将为null
。无论哪种方式,如果检索到的值不为null,则将其存储到会话中以供进一步使用
但是请注意,因为我们在这里讨论的是会话,所以这些保存的参数将仅在用户会话期间有效。如果用户关闭web浏览器并返回,以前保存的参数将丢失。您可以使用cookies保存筛选值
$.cookie($( "#selectEstadoFichas" ).val(), 1, { expires : 10 });
非常感谢你!!!但是有效的是$.cookie($(“#selectEstadoFichas”).val(),1,{expires:10});