امین
12 ماه پیش توسط امین مطرح شد
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


ثبت پرسش جدید
میکائیل
تخصص : برنامه نویسی سمت سرور و کلاینت
@FullStack 12 ماه پیش آپدیت شد
0

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

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

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

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

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


امین
@safaeiiam 12 ماه پیش مطرح شد
0

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


میکائیل
تخصص : برنامه نویسی سمت سرور و کلاینت
@FullStack 12 ماه پیش مطرح شد
0

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


امین
@safaeiiam 12 ماه پیش مطرح شد
0

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

  public function store(StorecategoryRequest $request)

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

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


میکائیل
تخصص : برنامه نویسی سمت سرور و کلاینت
@FullStack 12 ماه پیش مطرح شد
0

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

protected $table = 'category';

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

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

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


امین
@safaeiiam 12 ماه پیش مطرح شد
0

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


میکائیل
تخصص : برنامه نویسی سمت سرور و کلاینت
@FullStack 12 ماه پیش مطرح شد
0

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


امین
@safaeiiam 11 ماه پیش آپدیت شد
1

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

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

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

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