راکت

مشکل ذخیره سازی اطلاعات فرم در دیتابیس

8 پاسخ

با سلام و عرض ادب
دوستان عزیز ، هنگامی که می خوام در لاراول 10 فرمی که ساختم و اطلاعات واردش کردم رو داخل دیتابیس ذخیره کنم با ارورر 403 مواجه میشم. ممنون میشم راهنمایی کنید.

https://s8.uupload.ir/files/005_psv4.jpg
https://s8.uupload.ir/files/004_d7rk.jpg
https://s8.uupload.ir/files/003_1ddj.jpg
https://s8.uupload.ir/files/002_ucb9.jpg
https://s8.uupload.ir/files/001_6le.jpg

امین
امین
@safaeiiam
ثبت پرسش جدید

پاسخ‌ها

8
میکائیل
میکائیل
@FullStack

تخصص: برنامه نویسی سمت سرور و کلاینت

سلام وقت بخیر
مشکل توی controller هست توی قسمت store ببینید شما برای ورودی تابع اومدین CategoryRequest رو گرفتینکه احتمالا ارث بری کرده از Request ولی شما اینجا چیزی درباره model خودت تعرف نکردی و اگه توی request هم چیزی درباره شناسه model تعریف نکنی لاراول متوجهش نمیشه و میگه این مدل مجوز نداره که از استفاده بشه اررور بهت میده اول مدل رو پیدا کن مثل دستور زیر

$model = Category::find($request->get('id'));

و بعد با این دستور به مدل دسته بندی ها مجوز رو بدید

$this->authorize('ownItems', $model)

چک کنید ببینید مشکلتون حل میشه یا نه

امین
امین
@safaeiiam

سلام
ممنون بابت راهنماییتون
اگر این 2 تا دستور رو باید داخل کنترلر و تابع store بکار ببرم مشکل حل نشد. اگر هم باید کار دیگه ای کنم بیشتر راهنمایی کنید. ممنون

شاید پاسخ شما همین‌جا باشد

میکائیل
میکائیل
@FullStack

تخصص: برنامه نویسی سمت سرور و کلاینت

دوست عزیز شما اومدین و توی تابع store گفتین که new category من درست متوجه نشدم یعنی اسم مودل رو با حروف کوچیک ثبت کردید؟

امین
امین
@safaeiiam

سلام
من جواب دادم ولی نمیدونم چرا ثبت نشده
ببینید من دارم لاراول رو طبق آموزش آقای طالبی که مربوط به لاراول ورژن پایینتره میگذرونم و دقیقن نمیدونم کجاها باید تغییر بدم
توی آموزش های ایشون هیچ مشکلی نیست و ذخیره میشه
این نکته ای هم که گفتین تصحیح کردم مطابق کد پایین ولی حل نشد

  public function store(StorecategoryRequest $request)

    {
        $category= new Category([
            'title'=>$request->get('title'),
            'description'=>$request->get('description'),
            'active'=>$request->get('active')
        ]);
        $category->save();
    }

ممنون میشم راهنماییم کنید تا راه بیفتم

میکائیل
میکائیل
@FullStack

تخصص: برنامه نویسی سمت سرور و کلاینت

ممکنه داخل مودل فیلد های table رو نزاشتید مشکل گرفته باشه چون اسم مودل رو هم با حروف کوچیک نوشته بودید این کد ها نباید الان اررور داشته باشه توی مودل table رومشخص کن به این صورت

protected $table = 'category';

یا حالا هرچی اسم جدولت هست بعد اگه بازم مشکل حل نشد یه بار از روش elequent استفاده کن برای ذخیره سازی اطلاعات در دیتابیس یعنی یه شکل زیر

$category = Category::create([
    'title'=>$request->get('title'),
    'description'=>$request->get('description'),
    'active'=>$request->get('active')
]);

اگه حل نشد تا یه سرچ بزنم برات ببینم مشکل از چیه بعد ببینم همون اررور قبلی رو میده یانه

امین
امین
@safaeiiam

انجام دادم ولی حل نشد
من تو داکیومنت خود لاراول رو که مطالعه کردم متوجه شدم که ایراد امنیتی داره ولی هر کدوم از کدهایی که گفته بود رو زدم حل نشد.

میکائیل
میکائیل
@FullStack

تخصص: برنامه نویسی سمت سرور و کلاینت

خوب ببینید اینجا نیازمند تست هست چون ممکنه مشکل هر چیزی باشه شما یه تابع ازتون که الان کار میکنه و اطلاعات رو توی دیتابیس ذخیره میکنه رو تست کنید و توش این اطلاعات رو بزارید ببینید اطلاعات توی دیتابیس وارد میشه یا نه اینجوری به نظرم خوبه که اررور میگیری یاد میگیری چجوری تست کنی کد هارو و باگ هارو پیدا کنی در اینده این اررور ها برات راحت تر میشه باید چندین مورد رو تست کنی مثلا اول $request رو dd بگیره ببین چه دیتایی بهت میده بعد یه جدول دیگه رو توی اون فانکشن store تست بزن ببین جداول دیگه دیتا قرار میگیره داخلشون یا نه

امین
امین
@safaeiiam

سلام
ممنون
بالاخره فهمیدم
باید توی request تابع authorize رو true می کردم

class StorecategoryRequest extends FormRequest
{
    /**
     * Determine if the user is authorized to make this request.
     */
    public function authorize(): bool
    {
        return true;
    }

برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام