Rumah  >  Soal Jawab  >  teks badan

Pensirian "Penutupan" tidak dibenarkan dalam rangka kerja laravel (php)

Saya mendapat ralat ini apabila saya ingin log masuk sesi saya tetapi saya tidak tahu bagaimana untuk memperbaikinya, saya sangat memerlukannya kerana majlis graduasi saya esok. Ralat pertama dalam baris: $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);

Ralat kedua pada baris terakhir

<?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';

Ini ialah 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);
        }
    }
}

Baris ini ditulis seperti berikut: return redirect()->back()->with('error', 'Invalid Credentials'); saya hanya tahu ralatnya

P粉364642019P粉364642019229 hari yang lalu425

membalas semua(1)saya akan balas

  • P粉347804896

    P粉3478048962024-03-28 00:07:52

    Dalam Laravel, siri penutupan tidak dibenarkan secara lalai. Sekatan ini wujud kerana penutupan ialah fungsi tanpa nama dan boleh mengandungi rujukan kepada konteks dan pembolehubah sekeliling. Penutupan bersiri dan keadaan sekelilingnya boleh menjadi rumit dan terdedah kepada ralat.

    Apabila anda cuba membuat siri penutupan dalam Laravel, anda mungkin menghadapi ralat yang serupa dengan yang berikut:

    Untuk mengatasi had ini, anda boleh memfaktorkan semula kod anda untuk mengelakkan penutupan bersiri. Sebaliknya, anda boleh menggunakan jenis boleh bersiri lain, seperti kelas atau struktur data (seperti tatasusunan atau objek).

    Jika anda perlu menyimpan beberapa keadaan atau tingkah laku, anda boleh membuat kelas dan menentukan kaedah atau sifat yang diperlukan. Anda kemudiannya boleh mensiri dan menyahsiri kejadian kelas itu tanpa sebarang masalah.

    Berikut ialah contoh penggunaan penutupan untuk memfaktorkan semula kod ke dalam kelas:

    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();

    Dengan menggunakan kelas boleh bersiri, anda boleh mensiri dan menyahsiri kejadian dengan selamat tanpa menghadapi sebarang isu berkaitan penutupan.

    Ingat, penutupan ialah ciri yang berkuasa dalam PHP, tetapi ia mempunyai had dalam hal penyirian. Memfaktorkan semula kod anda untuk menggunakan kelas boleh bersiri boleh membantu anda mengatasi had ini dalam Laravel.

    balas
    0
  • Batalbalas