Fancybox 在会话超时时显示登录表单 cakephp
Fancybox displays login form on session timeout cakephp
我想问你一些我一直在努力的事情。
我有一个 link 可以在 fancybox modal 中显示 pdf。一切正常,直到会话过期,fancybox 模式显示登录表单。
你知道我能做什么吗?:这是我使用的代码:
index.ctp:
<?php echo $this->Html->link(__(''),
array(
'controller'=>'Search',
'action'=>'seepdf',
''
),
array(
"class"=>"glyphicon glyphicon-qrcode fancybox",
'data-fancybox-type'=>"iframe"
)) ?>
SearchController.php
public function seepdf() {
$this->viewClass = 'Media';
$params = array(
'id' => '232.pdf',
'name' => '232',
'download' => false,
'extension' => 'pdf',
'path' => APP . 'files' . DS
);
$this->set($params);
}
如有任何帮助,我们将不胜感激。提前致谢。
这是我提供的解决方案,虽然不是最好的方法,但确实有效。
我在 fancybox 加载之前调用 ajax 来检查用户是否登录,如果用户登录,一切正常,但如果没有用户登录,它会重定向到登录页面: 这是代码:
index.ctp
var succeed = true;
$(".fancybox").fancybox({
openEffect : 'elastic',
closeEffect : 'elastic',
padding : 0,
iframe : {
preload: false
},
beforeLoad: function(){
$.ajax({
type:"POST",
async: false,
url:"Search/isactive/",
success : function(data) {
if(data !== 'true'){
succeed = false;
}else{
succeed = true;
}
},
error : function() {
succeed = false;
}
});
if(succeed === false){
window.location = 'Users/signin';
return false;
}
}
});
SearchController.php
if ($this->Auth->loggedIn()) {
$this->autoRender = false;
$this->layout = null ;
echo json_encode(true);
}else{
echo json_encode(FALSE);
}
我需要添加一些验证,但这是一个有效的代码,以防万一有人需要它。如果有人有更好的主意,请告诉我,最好的问候!
我想问你一些我一直在努力的事情。
我有一个 link 可以在 fancybox modal 中显示 pdf。一切正常,直到会话过期,fancybox 模式显示登录表单。 你知道我能做什么吗?:这是我使用的代码:
index.ctp:
<?php echo $this->Html->link(__(''),
array(
'controller'=>'Search',
'action'=>'seepdf',
''
),
array(
"class"=>"glyphicon glyphicon-qrcode fancybox",
'data-fancybox-type'=>"iframe"
)) ?>
SearchController.php
public function seepdf() {
$this->viewClass = 'Media';
$params = array(
'id' => '232.pdf',
'name' => '232',
'download' => false,
'extension' => 'pdf',
'path' => APP . 'files' . DS
);
$this->set($params);
}
如有任何帮助,我们将不胜感激。提前致谢。
这是我提供的解决方案,虽然不是最好的方法,但确实有效。 我在 fancybox 加载之前调用 ajax 来检查用户是否登录,如果用户登录,一切正常,但如果没有用户登录,它会重定向到登录页面: 这是代码:
index.ctp
var succeed = true;
$(".fancybox").fancybox({
openEffect : 'elastic',
closeEffect : 'elastic',
padding : 0,
iframe : {
preload: false
},
beforeLoad: function(){
$.ajax({
type:"POST",
async: false,
url:"Search/isactive/",
success : function(data) {
if(data !== 'true'){
succeed = false;
}else{
succeed = true;
}
},
error : function() {
succeed = false;
}
});
if(succeed === false){
window.location = 'Users/signin';
return false;
}
}
});
SearchController.php
if ($this->Auth->loggedIn()) {
$this->autoRender = false;
$this->layout = null ;
echo json_encode(true);
}else{
echo json_encode(FALSE);
}
我需要添加一些验证,但这是一个有效的代码,以防万一有人需要它。如果有人有更好的主意,请告诉我,最好的问候!