为什么不使用post_system
挂钩?它在最后一页发送到浏览器之后调用,这样您就可以正常加载视图,而不会将它们回显出来。
下面是一个例子控制器:
class Home extends Controller {
function index()
{
$this->move_audio = TRUE;
$this->old_folder = "/path/to/folder/";
$this->new_folder = "/path/to/folder2/";
$this->load->view("some_view");
}
}
和示例钩:
function post_system()
{
$CI =& get_instance();
if(isset($CI->move_audio) && $CI->move_audio === TRUE)
{
// Trim, then add trailing slash for consitency
$old_folder = rtrim($CI->old_folder, "/")."/*.mp3";
$new_folder = rtrim($CI->new_folder, "/")."/";
exec("mv {$old_folder} {$new_folder}");
}
}
退房的hooks user guide对它们设置信息。他们是你的朋友!
编辑:东西我只是想的...
如果你只是一个控制器方法里面可以这样做......它可能会更好地使用菲尔的做法。这样可以避免每次请求挂钩,如果你只需要一次就不需要了。
如果您只需要一次,可以使用CI的_output()
处理程序(info here)。这将工作是这样的:
class Home extends Controller {
// Initalize the var to avoid having to
// check if it's set or not
var $move_audio = FALSE;
// CONTROLLER METHOD
function index()
{
$this->move_audio = TRUE;
$this->old_folder = "/path/to/folder/";
$this->new_folder = "/path/to/folder2/";
$this->load->view("some_view");
}
// OUTPUT HANDLER
function _output($output = "")
{
echo $output;
if($this->move_audio === TRUE)
{
// Trim, then add trailing slash for consitency
$old_folder = rtrim($this->old_folder, "/")."/*.mp3";
$new_folder = rtrim($this->new_folder, "/")."/";
exec("mv {$old_folder} {$new_folder}");
}
}
}
谢谢!这看起来有希望。 – zihaoyu 2010-05-24 19:46:16
它应该有所帮助,但我编辑了一些答案,因为如果您只需要一个控制器和一个方法的功能,那么这种方法就没有意义 – bschaeffer 2010-05-25 04:11:50