管理CakePHP 3控制器中的其他类输出

时间:2017-05-24 08:37:10

标签: cakephp cakephp-3.0

我在我的应用中使用PHP(不是CakePHP)供应商。
我将vendor文件夹放在“src / controller”中,并将其包含在“src / Controller / TelegramsController.php”set()方法中。

public function set() {
    require __DIR__ . '/vendor/autoload.php';
    $API_KEY = 'api key';
    $BOT_NAME = 'bot name';
    $hook_url = 'hook url';
    try {
        // Create Telegram API object
        $telegram = new Telegram($API_KEY, $BOT_NAME);

        // Set webhook
        $result = $telegram->setWebhook($hook_url);
        if ($result->isOk()) {
            echo $result->getDescription();
        }
    } catch (Longman\TelegramBot\Exception\TelegramException $e) {
        echo $e;
    }
}


当我调用set()方法时,Telegram类在CakePHP呈现视图之前显示响应。而CakePHP显示此警告。
Unable to emit headers.
如何管理Telegram类流出功能以在CakePHP视图中显示(而不是在视图之前)?

1 个答案:

答案 0 :(得分:0)

这不是你如何将与作曲家兼容的库包含在与作曲家兼容的项目中,而是composer require它们并依赖于CakePHP应用程序包含的主要自动加载器:

$ composer require longman/telegram-bot

请阅读composer的工作原理。

话虽如此,您正在覆盖现有的控制器方法,Controller::set()方法用于注册数据以供在视图模板中使用。为控制器操作方法选择其他名称,并根据需要使用现有的set()方法将数据传递到视图模板,或者返回正确准备的响应对象。在任何情况下,都不要在控制器操作中回显数据!

另见