Die Serialisierung von „Closure' ist im Laravel-Framework (PHP) nicht zulässig.
P粉364642019
P粉364642019 2024-03-27 09:52:07
0
1
464

Ich erhalte diese Fehlermeldung, wenn ich mich in meiner Sitzung anmelden möchte, aber nicht weiß, wie ich sie beheben kann. Ich brauche sie dringend, weil morgen meine Abschlussfeier ist. Erster Fehler in der Zeile: $response = $kernel->handle( $request = Request::capture() )->send();

use Illuminate\Contracts\Http\Kernel;
use Illuminate\Http\Request;

define('LARAVEL_START', microtime(true));


if (file_exists($maintenance = __DIR__.'/../storage/framework/maintenance.php')) {
   require $maintenance;
}

require __DIR__.'/../vendor/autoload.php';


$app = require_once __DIR__.'/../bootstrap/app.php';

$kernel = $app->make(Kernel::class);

$response = $kernel->handle(
   $request = Request::capture()
)->send();

$kernel->terminate($request, $response);

Zweiter Fehler in der letzten Zeile

<?php



$publicPath = getcwd();
$uri = urldecode(

    parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH) ?? ''

);
if ($uri !== '/' && file_exists($publicPath.$uri)) {

    return false;

}
require_once $publicPath.'/index.php';

Das ist authClass

<?php

namespace App\Http\Controllers\Admin;

use App\Http\Controllers\Controller;
use Illuminate\Http\Request;

class AuthController extends Controller
{
    public function getLogin()
    {
        return view('admin.auth.login');
    }
    public function postLogin(Request $request)
    {
        $request->validate([
            'email' => 'required|email',
            'password' => 'required'
        ]);
        $validated = auth()->attempt([
            'email' => $request->email,
            'password' => $request->password,
            'is_admin' => 1
        ], $request->password);
        if ($validated) {
            return redirect()->route('dashboard')->with('success', 'Login Successfull');
        } else {
            return redirect()->back()->with('error', $request);
        }
    }
}

Diese Zeile ist wie folgt geschrieben: return restart()->back()->with('error', 'Invalid Credentials'); Ich kenne stattdessen nur den Fehler

P粉364642019
P粉364642019

Antworte allen(1)
P粉347804896

在 Laravel 中,默认情况下不允许序列化闭包。存在此限制是因为闭包是匿名函数,可以包含对周围上下文和变量的引用。将闭包及其周围状态序列化可能很复杂且容易出错。

当您尝试在 Laravel 中序列化闭包时,您可能会遇到类似于以下内容的错误:

要解决此限制,您可以重构代码以避免序列化闭包。相反,您可以使用其他可序列化类型,例如类或数据结构(如数组或对象)。

如果需要存储某些状态或行为,可以创建一个类并定义所需的方法或属性。然后,您可以序列化和反序列化该类的实例,不会出现任何问题。

以下是使用闭包将代码重构为类的示例:

class MySerializableClass
{
    public function doSomething()
    {
        // Your code here
    }
}

$serializableInstance = new MySerializableClass();

// Serialize the instance
$serialized = serialize($serializableInstance);

// Unserialize the instance
$unserialized = unserialize($serialized);

// Call the method on the unserialized instance
$unserialized->doSomething();

通过使用可序列化的类,您可以安全地序列化和反序列化实例,而不会遇到与闭包相关的任何问题。

请记住,闭包是 PHP 中的一个强大功能,但在序列化方面它们有局限性。重构代码以使用可序列化类可以帮助您克服 Laravel 中的这一限制。

Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage