cakePHP вызывает функцию контроллера из файла ctp - PullRequest
1 голос
/ 02 декабря 2011

Как мне вызвать эту функцию в представлении (файл .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); 
}

Ответы [ 3 ]

1 голос
/ 02 декабря 2011

Как сказано другими, вы должны вызывать другой метод контроллера из действия вашего контроллера:

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 наследуют метод журнала , который вызывает CakeLog внутри. Вы можете использовать эту существующую функциональность вместо того, чтобы реализовать ее самостоятельно:

class UsersController extends AppController {

    public function paymentresp() {
        // do stuff
        $this->log($logMessage, 'error');
        // or
        CakeLog::write('error', $logMessage);
        // do more stuff
    }
}
0 голосов
/ 06 июня 2013

Используя requestAction, вы можете вызвать метод контроллера на странице просмотра.

например

$this->requestAction('/ControllerName/MethodName/');
0 голосов
/ 02 декабря 2011

Переместите свою функцию в bootstrap.php, и вы можете запустить ее из любого места.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...