【问题标题】:What does The Response content must be a string or object implementing __toString(), "object" given. mean and why do I only get it on the remote?什么 响应内容必须是实现__toString()的字符串或对象,给定的“对象”。意思是为什么我只能在遥控器上得到它?
【发布时间】:2013-08-13 11:23:00
【问题描述】:

我正在 PagodaBox 上运行一个应用程序。在本地它工作正常,但是当我将它推到宝塔时,我收到以下错误:

响应内容必须是实现__toString()的字符串或对象,“object”给定。

路线如下:

Route::get('tweets/{q}', function($q)
{
    return Twitter::getSearch(array('q' => $q, 'count' => 5, 'lang' => 'sv', 'result_type' => 'recent'));
});

其他路线工作正常。这个错误是什么意思,什么可能导致这个错误?

【问题讨论】:

  • 看起来 Twitter::getSearch 正在返回一个对象而不是字符串。 Route::get 期望返回一个字符串,因为 Twitter::getSearch 正在返回一个对象而不是字符串,因此会出现错误。您可能需要发布 Twitter::getSearch 中的内容,让您知道可能是什么问题

标签: laravel


【解决方案1】:

执行此操作以查看返回的内容。

dd(Twitter::getSearch(array('q' => $q, 'count' => 5, 'lang' => 'sv', 'result_type' => 'recent')));

您必须返回具有 __toString() 方法的 View 类,或者如果它是 ajax 请求,则返回类似 Response::json($data);

【讨论】:

    【解决方案2】:

    创建以下函数

    function utf8_encode_deep(&$input) {
        if (is_string($input)) {
            $input = utf8_encode($input);
        } else if (is_array($input)) {
            foreach ($input as &$value) {
                self::utf8_encode_deep($value);
            }
    
            unset($value);
        } else if (is_object($input)) {
            $vars = array_keys(get_object_vars($input));
    
            foreach ($vars as $var) {
                utf8_encode_deep($input->$var);
            }
        }
    

    尝试执行以下操作

    $response = Twitter::getSearch(array('q' => $q, 'count' => 5, 'lang' => 'sv', 'result_type' => 'recent'));
    
    utf8_encode_deep($response);
    
    return response;
    

    【讨论】:

      猜你喜欢
      • 2015-10-24
      • 1970-01-01
      • 2016-05-11
      • 2012-08-20
      • 2019-03-17
      • 2014-11-19
      • 2017-08-17
      • 2018-06-04
      相关资源
      最近更新 更多