Cakephp3 - Показать URL-адрес запроса HTTP-клиента на панели отладки

Я использую CakePHP 3.x . Я добавил свою настраиваемую панель в debug-kit, чтобы показать мои пользовательские данные здесь. На этой панели будут отображаться URL-адреса, на которые HTTP-клиент отправляет запрос.

Любая идея продолжить??

Если мне нужно добавить какую-либо функцию обратного вызова или любое дополнительное событие, чтобы получить URL-адрес из Cake\Network\Http\Adapter\Stream и зарегистрировать его на моей настраиваемой панели отладки. Я работаю над панелью отладки в первый раз, поэтому я не могу показать URL-адрес клиента HTTP на панели отладки.

Только я нашел это, где я могу отслеживать запрошенный URL-адрес как $url в следующем коде:

/**
 * Helper method for doing non-GET requests.
 *
 * @param string $method  HTTP method.
 * @param string $url     URL to request.
 * @param mixed  $data    The request body.
 * @param array  $options The options to use. Contains auth, proxy etc.
 *
 * @return \Cake\Network\Http\Response
 */
protected function _doRequest($method, $url, $data, $options)
{   debug(urldecode($url));
    $request = $this->_createRequest($method, $url, $data, $options);

    $time = microtime();
    $timerKey = 'debug_http.call.' . $url . '.' . $time;
    if (Configure::read('debug')) {
        DebugTimer::start($timerKey, $method . ' ' . $url);
    }

    $response = $this->send($request, $options);

    if (Configure::read('debug')) {
        DebugTimer::stop($timerKey);
        ClientCallPanel::addCall($request, $response, DebugTimer::elapsedTime($timerKey));
    }

    return $response;
}

Жду ответа экспертов...

1 ответ

Посмотрите, как нравятся встроенные панели LogPanel, TimerPanel, SqlPanelи т. д. делают вещи, они используют регистраторы и события для сбора данных.

Я бы посоветовал вам пойти тем же путем, чтобы отделить пользовательскую панель от вашего HTTP-клиента, то есть добавить настраиваемую возможность ведения журнала, где ваша панель может подключиться, зарегистрировав регистратор, который фиксирует определенный уровень и / или область, используемую HTTP-клиентом, или отправьте клиенту события, на которые ваша панель может подписаться.

Смотрите также

Другие вопросы по тегам