Neden sadece bir post_system
kanca kullanmak değil mi? Son sayfa onları yankılanan olmadan, tarayıcı, normalde görüşlerini yükleyebilirsiniz bu şekilde gönderildikten sonra deniyor.
İşte bir örnek denetleyici bulunuyor:
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");
}
}
Ve bir örnek kanca:
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}");
}
}
Onları ayarlama hakkında bilgi için hooks user guide göz atın. Onlar arkadaş oldular!
EDIT: Something I just thought of...
Eğer sadece tek bir denetleyici yöntemi içinde bu iş için gidiyoruz ... muhtemelen Phil yaklaşımını kullanmak daha iyi olacaktır. Bu sadece bir kez ihtiyacınız varsa gereksiz olacağını her istek için bir kanca çağrı sahip önleyeceğini.
Yapabileceğin başka bir şey, sadece bir kez ihtiyacınız varsa, Kontrolörleri için CI _output()
işleyicisi kullanmaktır (info here). İşte bu şekilde çalışacak:
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}");
}
}
}