据我了解,Codigniter 缓存适用于匹配 URI。因此,如果在包含表单的方法中设置缓存,它将一直显示空表单。
有没有办法设置是显示缓存文件还是渲染视图?
伪代码:
if form validation = FALSE
serve cache file
else
render view
endif
还有一种方法可以检查表单是否因为它是第一次加载而被显示,或者它是否因为有错误而被显示?
据我了解,Codigniter 缓存适用于匹配 URI。因此,如果在包含表单的方法中设置缓存,它将一直显示空表单。
有没有办法设置是显示缓存文件还是渲染视图?
伪代码:
if form validation = FALSE
serve cache file
else
render view
endif
还有一种方法可以检查表单是否因为它是第一次加载而被显示,或者它是否因为有错误而被显示?
使用 Codeigniter 缓存方式,无法有条件地从缓存中显示。因为 Codeigniter 决定在调用控制器本身之前从缓存中显示。
您可以做的是使用您的自定义缓存库。Codeigniter 有几个缓存库。你可以试试https://github.com/philsturgeon/codeigniter-cache
您可以根据输出提供的任何内容有条件地设置缓存。虽然它不会从缓存中呈现您的“视图”,但如果您对表单进行任何繁重的处理,它将显着提高您的性能。
例如,您可以在控制器中执行此操作:
$this->load->driver('cache');
if (!$this->form_validation->run())
{
if (!$cache = $this->cache->get('some unique variable'))
{
$cache = $this->some_model->some_function();
// Do your rendering here.
}
}
$this->load->view('some_view', array('data' => $cache));
这样你就可以使用文件缓存、memcached 或 apc 之类的东西来缓存你的变量。