爲什麼不使用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