如何在视图(.ctp文件)中调用此函数
实际功能在UserController
类
function verbose_log($msg) {
date_default_timezone_set('Asia/Calcutta');
$today = date("Ymd");
$timestamp = time();
$filename = "errorlog";
if (!file_exists($filename)) {
echo "The file $filename exists";
$ourFileHandle = touch($filename) or die("can't open file");
}
$fd = fopen($filename, "a");
$str = "${today}|${timestamp}|${msg}";
fwrite($fd, $str . PHP_EOL);
$timestamp ='';
fclose($fd);
}
答案 0 :(得分:1)
正如其他人所说,您应该从控制器操作中调用另一个控制器方法:
class UsersController extends AppController {
public function paymentresp() {
// do stuff
$this->_verbose_log($logMessage);
// do more stuff
}
protected function _verbose_log($message) {
// log stuff
}
}
(通过在方法名前加上下划线[受保护方法的约定],人们将无法通过访问http://example.com/controller/verbose_log将其作为控制器操作运行)
此外,所有CakePHP对象都继承了log method,在内部调用CakeLog
。您可以使用此现有功能,而不是自己实现它:
class UsersController extends AppController {
public function paymentresp() {
// do stuff
$this->log($logMessage, 'error');
// or
CakeLog::write('error', $logMessage);
// do more stuff
}
}
答案 1 :(得分:0)
将您的函数移动到bootstrap.php,您可以从任何地方运行它。
答案 2 :(得分:0)
使用requestAction,您可以将控制器方法调用到您的视图页面。
e.g。
$this->requestAction('/ControllerName/MethodName/');