2016-03-28 65 views
0

我已经开始构建一个新的Laravel 5应用程序。我需要在我的应用程序中的网站消息功能,所以我创建了一个。但现在当我试图消息添加到堆栈中,我会收到以下错误:FatalErrorException:输入字符串太长

FatalErrorException in ExceptionHandler.php line 412: Input string is too long

Apache的错误日志中说:

Mon Mar 28 20:25:40.310761 2016] [fcgid:warn] [pid 2075:tid 3028430848] [client 127.0.0.1:56643] mod_fcgid: stderr: PHP Fatal error: Input string is too long in /Users/xxx/Development/Laravel/myapp/vendor/symfony/debug/ExceptionHandler.php on line 412, referer: http://app.dev/page/new

我呼叫消息::设置方法在我的控制器:

Message::set('Page created'); 

和消息类包含:

<?php 

namespace App\Models; 

use Session; 

class Message { 

    const MESSAGE_INFO  = 0x1; 
    const MESSAGE_WARNING = 0x2; 
    const MESSAGE_ERROR  = 0x3; 

    public static function set($message, $type = MESSAGE_INFO) { 
     $messages = self::get(false); 
     $messages[$type][] = $message; 

     Session::put('app.messages', $messages); 
    } 

    public static function get($flush = true) { 
     $default = [ self::MESSAGE_INFO => [], self::MESSAGE_WARNING => [], self::MESSAGE_ERROR => []]; 

     if($flush) Session::pull('app.messages', $default); 
     return Session::get('app.messages', $default); 
    } 

    public static function isAny() { 
     $messages = self::get(false); 

     foreach($messages AS $store) if(!empty($store)) return true; 

     return false; 
    } 

} 

我很迷惘。有人可以帮我弄这个吗?

回答

0

可能是错的,但我不确定你可以在Laravel会话中存储数组。

后您存储阵列中的会话

Session::put('app.messages', $messages); 

试图转储会话变量:

dd(Session::get('app.messages')); 

回来陪你,所以我们可以深入挖掘的结果。 祝你好运!

+0

谢谢你回答这个问题。代码中只是出现了一点小错误。该修复程序已添加到原始文章中。 –

1

问题是与这条线:

public static function set($message, $type = MESSAGE_INFO) { 

它应该是:

public static function set($message, $type = self::MESSAGE_INFO) { 

MESSAGE_INFO常数在消息类中定义,不是全局。

错误消息真的让人困惑。当我把Message :: set('Page created');在一个try-catch块内调用,然后错误信息是:

FatalErrorException in GroupManagementController.php line 45: Allowed memory size of 268435456 bytes exhausted (tried to allocate 2890768384 bytes)