热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

为什么会话消息不起作用无脂肪框架?

如何解决《为什么会话消息不起作用无脂肪框架?》经验,为你挑选了1个好方法。

我写了一个示例crud应用程序,并希望显示一些消息,如果成功或发生错误.但是当我尝试设置会话消息时,重定向后它不会显示在页面上.它也不存在于$ _SESSION中.

这是我在UsersController中的代码

public function index(){
    $user = new User($this->db);
    $this->f3->set('users',$user->all());
    $this->f3->set('page_head','User List');
    //get session 
    new Session();
    $sess= $this->f3->get('SESSION.test');
    //set it to use in view file
    $this->f3->set('message', $sess);
    $this->f3->set('view','users/list.htm');
}

public function create(){
    if($this->f3->exists('POST.create')){
        $user = new User($this->db);
        $user->add();
        //set session 
        new Session();
        $this->f3->set('SESSION.test',"Success");
        $this->f3->reroute('/users');
    } else{
        $this->f3->set('page_head','Create User');
        $this->f3->set('view','users/create.htm');
    }
}

这是我的视图文件.

      
        
{{ @message }}

它不起作用.这有什么问题?代码取自无脂肪框架

编辑:正如xfra35建议的那样

好的,我用的时候

$f3->set('SESSION.test','Success');

并删除了对

新会话();

这工作正常,但如何直接在布局文件中使用它而不是在控制器中设置消息变量将其传递给布局文件?我的意思是我应该删除这些行

$ sess = $ this-> f3-> get('SESSION.test'); $ this-> f3-> set('message',$ sess);

并可以直接在视图文件中使用此会话消息.我需要像这样设置会话消息

$ _SESSION [ 'MSG'] [ '成功'] = "更新";

或$ _SESSION ['msg'] ['error'] ="错误";

我需要遍历会话消息并查看其错误消息或成功消息.有没有办法让会话变量一旦显示就变成空白?



1> xfra35..:

您正在使用的Session类是基于缓存的会话处理程序.

如果在您的服务器上找不到内存缓存后端(APC,Memcache,Redis,XCache等...),框架将使用自己的基于文件系统的缓存系统.在这种情况下,文件存储在一个名为子文件夹cache/里面TEMP的文件夹.(有关F3缓存引擎的更多详细信息,请参见此处)

所以回答你的问题:TEMP文件夹有可能无法写入.

无论如何,如果你不明确需要在缓存中存储会话,只需删除对Session类的调用并继续使用$f3->set('SESSION.test'):session将通过PHP存储在文件系统上(经典行为).

以下是在F3中存储会话的各种方法:

默认PHP会话(文件系统):

$f3->set('SESSION.test','Success');

缓存存储:

new Session();
$f3->set('SESSION.test','Success');

SQL存储:

$db=new DB\SQL($dsn,$user,$pw);
new DB\SQL\Session($db);
$f3->set('SESSION.test','Success');

MongoDB存储:

$db=new DB\Mongo($dsn,$dbname);
new DB\Mongo\Session($db);
$f3->set('SESSION.test','Success');

JigDB存储:

$db=new DB\Jig($dir);
new DB\Jig\Session($db);
$f3->set('SESSION.test','Success');


推荐阅读
author-avatar
落了个小妞农_602
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有