我已经开始构建一个新的Laravel 5应用程序。我的应用程序中需要一个站点消息功能,所以我创建了一个。但是现在当我尝试将消息添加到堆栈中时,我会收到以下错误:
ExceptionHandler.php第412行中的FatalErrorException:输入字符串是 太久了
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致命 错误:输入字符串太长 /Users/xxx/Development/Laravel/myapp/vendor/symfony/debug/ExceptionHandler.php 在第412行,引用者:http://app.dev/page/new
我在控制器中调用Message :: set方法:
Message::set('Page created');
Message类包含:
<?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 :(得分:1)
问题在于这一行:
public static function set($message, $type = MESSAGE_INFO) {
应该是:
public static function set($message, $type = self::MESSAGE_INFO) {
MESSAGE_INFO常量在Message类中定义,而不是全局定义。
错误消息确实令人困惑。当我把Message :: set(&#39; Page created&#39;);在try-catch块内调用,然后错误消息是:
GroupManagementController.php第45行中的FatalErrorException:允许 内存大小268435456字节耗尽(试图分配2890768384 字节)
答案 1 :(得分:0)
可能是错的,但我不确定你是否可以在Laravel会话中存储数组。
将该数组存储在会话中
Session::put('app.messages', $messages);
尝试转储会话变量:
dd(Session::get('app.messages'));
回到你得到的结果,我们可以深入挖掘。 祝你好运!