کریم کیمیائی فر
3 سال پیش توسط کریم کیمیائی فر مطرح شد
1 پاسخ

ارور در لاراول

سلام.
من یه پروژه لوکال برای تمرین کردن درست کردم و از لایووایر هم در پروژه استفاده کردم.
این ارور { Attempt to read property titleCompany on null } در صفحه ادمین این پروژه به من نمایش داده میشه:

Attempt to read property "titleCompany" on null

درواقع من اطلاعات فوتر صفحه اصلی پروژه رو گرفتم. درواقع Label های فوتر رو کپی کردم و در دیتابیس ، در یک جدول ذخیره کردم : اما زمانی که در صفحه ادمین اقدام به دریافت مقادیر میکنم ، این ارور نمایش داده میشه : درحالی که من همین کار هم در صفحه اصلی پروژه انجام دادم اما مقادیر به درستی نمایش داده میشه.
کد صفحه ادمین :

<?php

namespace App\Http\Livewire\Admin\Footer;

use App\Models\Admin\Footer\Footer;
use Illuminate\Support\Facades\DB;
use Livewire\Component;

class Titles extends Component
{
    public $titleCompany, $titleLabel1, $titleLabel2, $titleLabel3, $titleAddress, $titlePhone, $titleEmail, $titleSubscribe, $textSubscribe, $buttonSubscribe, $titleCopyright, $titleDesignedBy;
    public Footer $footer;

    public function __construct()
    {
        $footer = DB::table('footers')->first();
        // Variable
        $this->titleCompany = $footer->titleCompany;
        $this->titleLabel1 = $footer->titleLabel1;
        $this->titleLabel2 = $footer->titleLabel2;
        $this->titleLabel3 = $footer->titleLabel3;
        $this->titleAddress = $footer->titleAddress;
        $this->titlePhone = $footer->titlePhone;
        $this->titleEmail = $footer->titleEmail;
        $this->titleSubscribe = $footer->titleSubscribe;
        $this->textSubscribe = $footer->textSubscribe;
        $this->buttonSubscribe = $footer->buttonSubscribe;
        $this->titleCopyright = $footer->titleCopyright;
        $this->titleDesignedBy = $footer->titleDesignedBy;
    }

    public function render()
    {
        return view('livewire.admin.footer.titles');
    }

    public function update()
    {
        $footer = DB::table('footers')->limit(1);

        // Validation
        $this->validate([
            'titleCompany' => 'required',
            'titleLabel1' => 'required',
            'titleLabel2' => 'required',
            'titleLabel3' => 'required',
            'titleAddress' => 'required',
            'titlePhone' => 'required',
            'titleEmail' => 'required',
            'titleSubscribe' => 'required',
            'textSubscribe' => 'required',
            'buttonSubscribe' => 'required',
            'titleCopyright' => 'required',
            'titleDesignedBy' => 'required',
        ]);

        // Update
        $footer->update([
            'titleCompany' => $this->titleCompany,
            'titleLabel1' => $this->titleLabel1,
            'titleLabel2' => $this->titleLabel2,
            'titleLabel3' => $this->titleLabel3,
            'titleAddress' => $this->titleAddress,
            'titlePhone' => $this->titlePhone,
            'titleEmail' => $this->titleEmail,
            'titleSubscribe' => $this->titleSubscribe,
            'textSubscribe' => $this->textSubscribe,
            'buttonSubscribe' => $this->buttonSubscribe,
            'titleCopyright' => $this->titleCopyright,
            'titleDesignedBy' => $this->titleDesignedBy
        ]);

    }
}

این هم کد صفحه اصلی پروژه:

<?php

namespace App\Http\Livewire\Home\Layouts;

use Illuminate\Support\Facades\DB;
use Livewire\Component;

class Footer extends Component
{
    public function render()
    {
        $footer = DB::table('footers')->first();
        return view('livewire.home.layouts.footer', compact('footer'));
    }
}

fillable هم در مدل مربوطه مشخص کردم :

protected $fillable = [
        'titleCompany',
        'titleLabel1',
        'titleLabel2',
        'titleLabel3',
        'titleAddress',
        'titlePhone',
        'titleEmail',
        'titleSubscribe',
        'textSubscribe',
        'buttonSubscribe',
        'titleCopyright',
        'titleDesignedBy',
    ];

نسخه لاراول پروژه:

Laravel Framework 10.4.1

لطفا اگر مشکلی هست ، من رو کمک بدید🤝