مرحله اول: نصب لاراول
برای ایجاد سریع یک CRUD ساده در Laravel 8 اول از همه ما باید یکبار Laravel را با استفاده از دستور زیر دریافت کنیم، برای این منظور ترمینال خط فرمان خود را باز کنید و دستور زیر را اجرا کنید:
[pastacode lang=”php” manual=”composer%20create-project%20–prefer-dist%20laravel%2Flaravel%20blog” message=”” highlight=”” provider=”manual”/]
مرحله دوم: تنظیمات پایگاه داده
در این مرحله، ما اطلاعات اتصال به پایگاه داده را که شامل نام پایگاه داده، نام کاربری و رمز عبور است را برای laravel 8 تنظیم می کنیم، برای این منظور فایل .env را باز کرده و جزئیات لازم را به صورت زیر پر می کنیم:
[pastacode lang=”php” manual=”DB_CONNECTION%3Dmysql%0ADB_HOST%3D127.0.0.1%0ADB_PORT%3D3306%0ADB_DATABASE%3Dhere%20your%20database%20name(blog)%0ADB_USERNAME%3Dhere%20database%20username(root)%0ADB_PASSWORD%3Dhere%20database%20password(root)” message=”.env” highlight=”” provider=”manual”/]
مرحله سوم: ساخت Migration
در لاراول برای ساخت استراکچر پایگاه داده از Migration بهرمند خواهیم شد، برای این منظور از خط فرمان زیر استفاده می کنیم.
[pastacode lang=”php” manual=”php%20artisan%20make%3Amigration%20create_products_table%20–create%3Dproducts%0A%0A” message=”” highlight=”” provider=”manual”/]
بعد از اجرای خط فرمان بالا یک فایل در مسیر database/migrations ایجاد می گردد آن را بصورت زیر تغییر دهید، تا استراکچر جدول products در پایگاه داده شما ایجاد گردد:
[pastacode lang=”php” manual=”%3C%3Fphp%0A%20%20%0Ause%20Illuminate%5CDatabase%5CMigrations%5CMigration%3B%0Ause%20Illuminate%5CDatabase%5CSchema%5CBlueprint%3B%0Ause%20Illuminate%5CSupport%5CFacades%5CSchema%3B%0A%20%20%0Aclass%20CreateProductsTable%20extends%20Migration%0A%7B%0A%20%20%20%20%2F**%0A%20%20%20%20%20*%20Run%20the%20migrations.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40return%20void%0A%20%20%20%20%20*%2F%0A%20%20%20%20public%20function%20up()%0A%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20Schema%3A%3Acreate(‘products’%2C%20function%20(Blueprint%20%24table)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%24table-%3Eid()%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%24table-%3Estring(‘name’)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%24table-%3Etext(‘detail’)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%24table-%3Etimestamps()%3B%0A%20%20%20%20%20%20%20%20%7D)%3B%0A%20%20%20%20%7D%0A%20%20%0A%20%20%20%20%2F**%0A%20%20%20%20%20*%20Reverse%20the%20migrations.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40return%20void%0A%20%20%20%20%20*%2F%0A%20%20%20%20public%20function%20down()%0A%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20Schema%3A%3AdropIfExists(‘products’)%3B%0A%20%20%20%20%7D%0A%7D” message=”” highlight=”” provider=”manual”/]
حال با اجرای خط فرمان زیر جدول پایگاه داده ایجاد خواهد شد.
[pastacode lang=”php” manual=”php%20artisan%20migrate” message=”” highlight=”” provider=”manual”/]
مرحله چهارم: افزودن Route
برای ایجاد روت ها به مسیر زیر رفته و کد زیر را قرار می دهیم.
[pastacode lang=”php” manual=”use%20App%5CHttp%5CControllers%5CProductController%3B%0A%20%20%0ARoute%3A%3Aresource(‘products’%2C%20ProductController%3A%3Aclass)%3B” message=”routes/web.php” highlight=”” provider=”manual”/]
مرحله پنجم: تعریف Controller و Model
کنون در این مرحله باید یک کنترلر جدیدی تحت عنوان ProductController ایجاد کنیم، بنابراین دستور زیر را اجرا می کنیم تا یک کنترلر و مدل جدید ایجاد کنیم.
[pastacode lang=”php” manual=”php%20artisan%20make%3Acontroller%20ProductController%20–resource%20–model%3DProduct” message=”” highlight=”” provider=”manual”/]
پس از اجرای دستور زیر، پرونده جدیدی در این مسیر “app/Http/Controllers/ProductController.php” ایجاد خواهد شد، در این Controller به طور پیش فرض هفت methods بصورت پیش فرض وجود دارند که عبارتند از:
[pastacode lang=”php” manual=”index()%0Acreate()%0Astore()%0Ashow()%0Aedit()%0Aupdate()%0Adestroy()” message=”” highlight=”” provider=”manual”/]
همانطور که اشاره شد متد های این کنترلر بصورت پیش فرض خالی هستند برای سرعت آموزش محنوای نهایی فایل ProductController.php به صورت زیر تغییر دهید:
[pastacode lang=”php” manual=”%3C%3Fphp%0A%20%20%0Anamespace%20App%5CHttp%5CControllers%3B%0A%20%20%20%0Ause%20App%5CModels%5CProduct%3B%0Ause%20Illuminate%5CHttp%5CRequest%3B%0A%20%20%0Aclass%20ProductController%20extends%20Controller%0A%7B%0A%20%20%20%20%2F**%0A%20%20%20%20%20*%20Display%20a%20listing%20of%20the%20resource.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40return%20%5CIlluminate%5CHttp%5CResponse%0A%20%20%20%20%20*%2F%0A%20%20%20%20public%20function%20index()%0A%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%24products%20%3D%20Product%3A%3Alatest()-%3Epaginate(5)%3B%0A%20%20%20%20%0A%20%20%20%20%20%20%20%20return%20view(‘products.index’%2Ccompact(‘products’))%0A%20%20%20%20%20%20%20%20%20%20%20%20-%3Ewith(‘i’%2C%20(request()-%3Einput(‘page’%2C%201)%20-%201)%20*%205)%3B%0A%20%20%20%20%7D%0A%20%20%20%20%20%0A%20%20%20%20%2F**%0A%20%20%20%20%20*%20Show%20the%20form%20for%20creating%20a%20new%20resource.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40return%20%5CIlluminate%5CHttp%5CResponse%0A%20%20%20%20%20*%2F%0A%20%20%20%20public%20function%20create()%0A%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20return%20view(‘products.create’)%3B%0A%20%20%20%20%7D%0A%20%20%20%20%0A%20%20%20%20%2F**%0A%20%20%20%20%20*%20Store%20a%20newly%20created%20resource%20in%20storage.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40param%20%20%5CIlluminate%5CHttp%5CRequest%20%20%24request%0A%20%20%20%20%20*%20%40return%20%5CIlluminate%5CHttp%5CResponse%0A%20%20%20%20%20*%2F%0A%20%20%20%20public%20function%20store(Request%20%24request)%0A%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%24request-%3Evalidate(%5B%0A%20%20%20%20%20%20%20%20%20%20%20%20’name’%20%3D%3E%20’required’%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20’detail’%20%3D%3E%20’required’%2C%0A%20%20%20%20%20%20%20%20%5D)%3B%0A%20%20%20%20%0A%20%20%20%20%20%20%20%20Product%3A%3Acreate(%24request-%3Eall())%3B%0A%20%20%20%20%20%0A%20%20%20%20%20%20%20%20return%20redirect()-%3Eroute(‘products.index’)%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20-%3Ewith(‘success’%2C’Product%20created%20successfully.’)%3B%0A%20%20%20%20%7D%0A%20%20%20%20%20%0A%20%20%20%20%2F**%0A%20%20%20%20%20*%20Display%20the%20specified%20resource.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40param%20%20%5CApp%5CProduct%20%20%24product%0A%20%20%20%20%20*%20%40return%20%5CIlluminate%5CHttp%5CResponse%0A%20%20%20%20%20*%2F%0A%20%20%20%20public%20function%20show(Product%20%24product)%0A%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20return%20view(‘products.show’%2Ccompact(‘product’))%3B%0A%20%20%20%20%7D%20%0A%20%20%20%20%20%0A%20%20%20%20%2F**%0A%20%20%20%20%20*%20Show%20the%20form%20for%20editing%20the%20specified%20resource.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40param%20%20%5CApp%5CProduct%20%20%24product%0A%20%20%20%20%20*%20%40return%20%5CIlluminate%5CHttp%5CResponse%0A%20%20%20%20%20*%2F%0A%20%20%20%20public%20function%20edit(Product%20%24product)%0A%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20return%20view(‘products.edit’%2Ccompact(‘product’))%3B%0A%20%20%20%20%7D%0A%20%20%20%20%0A%20%20%20%20%2F**%0A%20%20%20%20%20*%20Update%20the%20specified%20resource%20in%20storage.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40param%20%20%5CIlluminate%5CHttp%5CRequest%20%20%24request%0A%20%20%20%20%20*%20%40param%20%20%5CApp%5CProduct%20%20%24product%0A%20%20%20%20%20*%20%40return%20%5CIlluminate%5CHttp%5CResponse%0A%20%20%20%20%20*%2F%0A%20%20%20%20public%20function%20update(Request%20%24request%2C%20Product%20%24product)%0A%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%24request-%3Evalidate(%5B%0A%20%20%20%20%20%20%20%20%20%20%20%20’name’%20%3D%3E%20’required’%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20’detail’%20%3D%3E%20’required’%2C%0A%20%20%20%20%20%20%20%20%5D)%3B%0A%20%20%20%20%0A%20%20%20%20%20%20%20%20%24product-%3Eupdate(%24request-%3Eall())%3B%0A%20%20%20%20%0A%20%20%20%20%20%20%20%20return%20redirect()-%3Eroute(‘products.index’)%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20-%3Ewith(‘success’%2C’Product%20updated%20successfully’)%3B%0A%20%20%20%20%7D%0A%20%20%20%20%0A%20%20%20%20%2F**%0A%20%20%20%20%20*%20Remove%20the%20specified%20resource%20from%20storage.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40param%20%20%5CApp%5CProduct%20%20%24product%0A%20%20%20%20%20*%20%40return%20%5CIlluminate%5CHttp%5CResponse%0A%20%20%20%20%20*%2F%0A%20%20%20%20public%20function%20destroy(Product%20%24product)%0A%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%24product-%3Edelete()%3B%0A%20%20%20%20%0A%20%20%20%20%20%20%20%20return%20redirect()-%3Eroute(‘products.index’)%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20-%3Ewith(‘success’%2C’Product%20deleted%20successfully’)%3B%0A%20%20%20%20%7D%0A%7D” message=”app/Http/Controllers/ProductController.php” highlight=”” provider=”manual”/]
بسیار خوب، بعد از تغییرات بالا به مسیر “app/Models/Product.php” مراجعه کرده و محتوای فایل Product.php بصورت زیر تغییر دهید:
[pastacode lang=”php” manual=”%3C%3Fphp%0A%20%20%0Anamespace%20App%5CModels%3B%0A%20%20%0Ause%20Illuminate%5CDatabase%5CEloquent%5CFactories%5CHasFactory%3B%0Ause%20Illuminate%5CDatabase%5CEloquent%5CModel%3B%0A%20%20%0Aclass%20Product%20extends%20Model%0A%7B%0A%20%20%20%20use%20HasFactory%3B%0A%20%20%0A%20%20%20%20protected%20%24fillable%20%3D%20%5B%0A%20%20%20%20%20%20%20%20’name’%2C%20’detail’%0A%20%20%20%20%5D%3B%0A%7D” message=”app/Models/Product.php” highlight=”” provider=”manual”/]
مرحله ششم: افزودن Blade فایل ها برای View
در آخرین مرحله باید فایلهای blade را در View ایجاد کنیم. این فایل ها عمدتا فایل های HTML و استراکچر طرح بوده و متغییر ها در آن جا نمایی خواهد شد، برای طبقه بندی بهتر این فایل ها را در فولدی به نام products در مسیر resources/views ایجاد خواهیم کرد این فایل ها به شرح زیر می باشند:
[pastacode lang=”php” manual=”layout.blade.php%0Aindex.blade.php%0Acreate.blade.php%0Aedit.blade.php%0Ashow.blade.php” message=”” highlight=”” provider=”manual”/]
بنابراین تک تک این فایل ها را بصورت زیر ایجاد می کنیم:
[pastacode lang=”php” manual=”%3C!DOCTYPE%20html%3E%0A%3Chtml%3E%0A%3Chead%3E%0A%20%20%20%20%3Ctitle%3ELaravel%208%20CRUD%20Application%20-%20uclass.ir%3C%2Ftitle%3E%0A%20%20%20%20%3Clink%20href%3D%22https%3A%2F%2Fcdnjs.cloudflare.com%2Fajax%2Flibs%2Ftwitter-bootstrap%2F4.0.0-alpha%2Fcss%2Fbootstrap.css%22%20rel%3D%22stylesheet%22%3E%0A%3C%2Fhead%3E%0A%3Cbody%3E%0A%20%20%0A%3Cdiv%20class%3D%22container%22%3E%0A%20%20%20%20%40yield(‘content’)%0A%3C%2Fdiv%3E%0A%20%20%20%0A%3C%2Fbody%3E%0A%3C%2Fhtml%3E” message=”resources/views/products/layout.blade.php” highlight=”” provider=”manual”/]
[pastacode lang=”php” manual=”%40extends(‘products.layout’)%0A%20%0A%40section(‘content’)%0A%20%20%20%20%3Cdiv%20class%3D%22row%22%3E%0A%20%20%20%20%20%20%20%20%3Cdiv%20class%3D%22col-lg-12%20margin-tb%22%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3Cdiv%20class%3D%22pull-left%22%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Ch2%3ELaravel%208%20CRUD%20Example%20from%20scratch%20-%20uclass.ir%3C%2Fh2%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3C%2Fdiv%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3Cdiv%20class%3D%22pull-right%22%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Ca%20class%3D%22btn%20btn-success%22%20href%3D%22%7B%7B%20route(‘products.create’)%20%7D%7D%22%3E%20Create%20New%20Product%3C%2Fa%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3C%2Fdiv%3E%0A%20%20%20%20%20%20%20%20%3C%2Fdiv%3E%0A%20%20%20%20%3C%2Fdiv%3E%0A%20%20%20%0A%20%20%20%20%40if%20(%24message%20%3D%20Session%3A%3Aget(‘success’))%0A%20%20%20%20%20%20%20%20%3Cdiv%20class%3D%22alert%20alert-success%22%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3Cp%3E%7B%7B%20%24message%20%7D%7D%3C%2Fp%3E%0A%20%20%20%20%20%20%20%20%3C%2Fdiv%3E%0A%20%20%20%20%40endif%0A%20%20%20%0A%20%20%20%20%3Ctable%20class%3D%22table%20table-bordered%22%3E%0A%20%20%20%20%20%20%20%20%3Ctr%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3Cth%3ENo%3C%2Fth%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3Cth%3EName%3C%2Fth%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3Cth%3EDetails%3C%2Fth%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3Cth%20width%3D%22280px%22%3EAction%3C%2Fth%3E%0A%20%20%20%20%20%20%20%20%3C%2Ftr%3E%0A%20%20%20%20%20%20%20%20%40foreach%20(%24products%20as%20%24product)%0A%20%20%20%20%20%20%20%20%3Ctr%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3Ctd%3E%7B%7B%20%2B%2B%24i%20%7D%7D%3C%2Ftd%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3Ctd%3E%7B%7B%20%24product-%3Ename%20%7D%7D%3C%2Ftd%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3Ctd%3E%7B%7B%20%24product-%3Edetail%20%7D%7D%3C%2Ftd%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3Ctd%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cform%20action%3D%22%7B%7B%20route(‘products.destroy’%2C%24product-%3Eid)%20%7D%7D%22%20method%3D%22POST%22%3E%0A%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Ca%20class%3D%22btn%20btn-info%22%20href%3D%22%7B%7B%20route(‘products.show’%2C%24product-%3Eid)%20%7D%7D%22%3EShow%3C%2Fa%3E%0A%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Ca%20class%3D%22btn%20btn-primary%22%20href%3D%22%7B%7B%20route(‘products.edit’%2C%24product-%3Eid)%20%7D%7D%22%3EEdit%3C%2Fa%3E%0A%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%40csrf%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%40method(‘DELETE’)%0A%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cbutton%20type%3D%22submit%22%20class%3D%22btn%20btn-danger%22%3EDelete%3C%2Fbutton%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3C%2Fform%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3C%2Ftd%3E%0A%20%20%20%20%20%20%20%20%3C%2Ftr%3E%0A%20%20%20%20%20%20%20%20%40endforeach%0A%20%20%20%20%3C%2Ftable%3E%0A%20%20%0A%20%20%20%20%7B!!%20%24products-%3Elinks()%20!!%7D%0A%20%20%20%20%20%20%0A%40endsection” message=”resources/views/products/index.blade.php” highlight=”” provider=”manual”/]
[pastacode lang=”php” manual=”%40extends(‘products.layout’)%0A%20%20%0A%40section(‘content’)%0A%3Cdiv%20class%3D%22row%22%3E%0A%20%20%20%20%3Cdiv%20class%3D%22col-lg-12%20margin-tb%22%3E%0A%20%20%20%20%20%20%20%20%3Cdiv%20class%3D%22pull-left%22%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3Ch2%3EAdd%20New%20Product%3C%2Fh2%3E%0A%20%20%20%20%20%20%20%20%3C%2Fdiv%3E%0A%20%20%20%20%20%20%20%20%3Cdiv%20class%3D%22pull-right%22%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3Ca%20class%3D%22btn%20btn-primary%22%20href%3D%22%7B%7B%20route(‘products.index’)%20%7D%7D%22%3E%20Back%3C%2Fa%3E%0A%20%20%20%20%20%20%20%20%3C%2Fdiv%3E%0A%20%20%20%20%3C%2Fdiv%3E%0A%3C%2Fdiv%3E%0A%20%20%20%0A%40if%20(%24errors-%3Eany())%0A%20%20%20%20%3Cdiv%20class%3D%22alert%20alert-danger%22%3E%0A%20%20%20%20%20%20%20%20%3Cstrong%3EWhoops!%3C%2Fstrong%3E%20There%20were%20some%20problems%20with%20your%20input.%3Cbr%3E%3Cbr%3E%0A%20%20%20%20%20%20%20%20%3Cul%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%40foreach%20(%24errors-%3Eall()%20as%20%24error)%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cli%3E%7B%7B%20%24error%20%7D%7D%3C%2Fli%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%40endforeach%0A%20%20%20%20%20%20%20%20%3C%2Ful%3E%0A%20%20%20%20%3C%2Fdiv%3E%0A%40endif%0A%20%20%20%0A%3Cform%20action%3D%22%7B%7B%20route(‘products.store’)%20%7D%7D%22%20method%3D%22POST%22%3E%0A%20%20%20%20%40csrf%0A%20%20%0A%20%20%20%20%20%3Cdiv%20class%3D%22row%22%3E%0A%20%20%20%20%20%20%20%20%3Cdiv%20class%3D%22col-xs-12%20col-sm-12%20col-md-12%22%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3Cdiv%20class%3D%22form-group%22%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cstrong%3EName%3A%3C%2Fstrong%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cinput%20type%3D%22text%22%20name%3D%22name%22%20class%3D%22form-control%22%20placeholder%3D%22Name%22%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3C%2Fdiv%3E%0A%20%20%20%20%20%20%20%20%3C%2Fdiv%3E%0A%20%20%20%20%20%20%20%20%3Cdiv%20class%3D%22col-xs-12%20col-sm-12%20col-md-12%22%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3Cdiv%20class%3D%22form-group%22%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cstrong%3EDetail%3A%3C%2Fstrong%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Ctextarea%20class%3D%22form-control%22%20style%3D%22height%3A150px%22%20name%3D%22detail%22%20placeholder%3D%22Detail%22%3E%3C%2Ftextarea%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3C%2Fdiv%3E%0A%20%20%20%20%20%20%20%20%3C%2Fdiv%3E%0A%20%20%20%20%20%20%20%20%3Cdiv%20class%3D%22col-xs-12%20col-sm-12%20col-md-12%20text-center%22%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cbutton%20type%3D%22submit%22%20class%3D%22btn%20btn-primary%22%3ESubmit%3C%2Fbutton%3E%0A%20%20%20%20%20%20%20%20%3C%2Fdiv%3E%0A%20%20%20%20%3C%2Fdiv%3E%0A%20%20%20%0A%3C%2Fform%3E%0A%40endsection” message=”resources/views/products/create.blade.php” highlight=”” provider=”manual”/]
[pastacode lang=”php” manual=”%40extends(‘products.layout’)%0A%20%20%20%0A%40section(‘content’)%0A%20%20%20%20%3Cdiv%20class%3D%22row%22%3E%0A%20%20%20%20%20%20%20%20%3Cdiv%20class%3D%22col-lg-12%20margin-tb%22%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3Cdiv%20class%3D%22pull-left%22%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Ch2%3EEdit%20Product%3C%2Fh2%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3C%2Fdiv%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3Cdiv%20class%3D%22pull-right%22%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Ca%20class%3D%22btn%20btn-primary%22%20href%3D%22%7B%7B%20route(‘products.index’)%20%7D%7D%22%3E%20Back%3C%2Fa%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3C%2Fdiv%3E%0A%20%20%20%20%20%20%20%20%3C%2Fdiv%3E%0A%20%20%20%20%3C%2Fdiv%3E%0A%20%20%20%0A%20%20%20%20%40if%20(%24errors-%3Eany())%0A%20%20%20%20%20%20%20%20%3Cdiv%20class%3D%22alert%20alert-danger%22%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3Cstrong%3EWhoops!%3C%2Fstrong%3E%20There%20were%20some%20problems%20with%20your%20input.%3Cbr%3E%3Cbr%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3Cul%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%40foreach%20(%24errors-%3Eall()%20as%20%24error)%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cli%3E%7B%7B%20%24error%20%7D%7D%3C%2Fli%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%40endforeach%0A%20%20%20%20%20%20%20%20%20%20%20%20%3C%2Ful%3E%0A%20%20%20%20%20%20%20%20%3C%2Fdiv%3E%0A%20%20%20%20%40endif%0A%20%20%0A%20%20%20%20%3Cform%20action%3D%22%7B%7B%20route(‘products.update’%2C%24product-%3Eid)%20%7D%7D%22%20method%3D%22POST%22%3E%0A%20%20%20%20%20%20%20%20%40csrf%0A%20%20%20%20%20%20%20%20%40method(‘PUT’)%0A%20%20%20%0A%20%20%20%20%20%20%20%20%20%3Cdiv%20class%3D%22row%22%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3Cdiv%20class%3D%22col-xs-12%20col-sm-12%20col-md-12%22%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cdiv%20class%3D%22form-group%22%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cstrong%3EName%3A%3C%2Fstrong%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cinput%20type%3D%22text%22%20name%3D%22name%22%20value%3D%22%7B%7B%20%24product-%3Ename%20%7D%7D%22%20class%3D%22form-control%22%20placeholder%3D%22Name%22%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3C%2Fdiv%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3C%2Fdiv%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3Cdiv%20class%3D%22col-xs-12%20col-sm-12%20col-md-12%22%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cdiv%20class%3D%22form-group%22%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cstrong%3EDetail%3A%3C%2Fstrong%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Ctextarea%20class%3D%22form-control%22%20style%3D%22height%3A150px%22%20name%3D%22detail%22%20placeholder%3D%22Detail%22%3E%7B%7B%20%24product-%3Edetail%20%7D%7D%3C%2Ftextarea%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3C%2Fdiv%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3C%2Fdiv%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3Cdiv%20class%3D%22col-xs-12%20col-sm-12%20col-md-12%20text-center%22%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cbutton%20type%3D%22submit%22%20class%3D%22btn%20btn-primary%22%3ESubmit%3C%2Fbutton%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3C%2Fdiv%3E%0A%20%20%20%20%20%20%20%20%3C%2Fdiv%3E%0A%20%20%20%0A%20%20%20%20%3C%2Fform%3E%0A%40endsection” message=”resources/views/products/edit.blade.php” highlight=”” provider=”manual”/]
[pastacode lang=”php” manual=”%40extends(‘products.layout’)%0A%20%20%0A%40section(‘content’)%0A%20%20%20%20%3Cdiv%20class%3D%22row%22%3E%0A%20%20%20%20%20%20%20%20%3Cdiv%20class%3D%22col-lg-12%20margin-tb%22%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3Cdiv%20class%3D%22pull-left%22%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Ch2%3E%20Show%20Product%3C%2Fh2%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3C%2Fdiv%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3Cdiv%20class%3D%22pull-right%22%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Ca%20class%3D%22btn%20btn-primary%22%20href%3D%22%7B%7B%20route(‘products.index’)%20%7D%7D%22%3E%20Back%3C%2Fa%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3C%2Fdiv%3E%0A%20%20%20%20%20%20%20%20%3C%2Fdiv%3E%0A%20%20%20%20%3C%2Fdiv%3E%0A%20%20%20%0A%20%20%20%20%3Cdiv%20class%3D%22row%22%3E%0A%20%20%20%20%20%20%20%20%3Cdiv%20class%3D%22col-xs-12%20col-sm-12%20col-md-12%22%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3Cdiv%20class%3D%22form-group%22%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cstrong%3EName%3A%3C%2Fstrong%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%7B%20%24product-%3Ename%20%7D%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%3C%2Fdiv%3E%0A%20%20%20%20%20%20%20%20%3C%2Fdiv%3E%0A%20%20%20%20%20%20%20%20%3Cdiv%20class%3D%22col-xs-12%20col-sm-12%20col-md-12%22%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3Cdiv%20class%3D%22form-group%22%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cstrong%3EDetails%3A%3C%2Fstrong%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%7B%20%24product-%3Edetail%20%7D%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%3C%2Fdiv%3E%0A%20%20%20%20%20%20%20%20%3C%2Fdiv%3E%0A%20%20%20%20%3C%2Fdiv%3E%0A%40endsection” message=”resources/views/products/show.blade.php” highlight=”” provider=”manual”/]
اکنون ما آماده اجرای نمونه برنامه CRUD خود با laravel 8 هستیم ، بنابراین برای اجرای سریع دستور زیر را اجرا کنید:
[pastacode lang=”php” manual=”php%20artisan%20serve” message=”” highlight=”” provider=”manual”/]
اکنون می توانید URL زیر را در مرورگر خود باز کنید:
[pastacode lang=”php” manual=”http%3A%2F%2Flocalhost%3A8000%2Fproducts” message=”” highlight=”” provider=”manual”/]
سلام ، من توی این بحث Form از Crud به مشکل خوردم .
4 تا عکس از کد و اجرا میفرستم .
:: کد های Create.blade.php
http://s15.picofile.com/file/8409172650/1.JPG
:: کد های :: PostsConteroller
http://s14.picofile.com/file/8409172676/2.JPG
:: کد های :: Web.php
http://s14.picofile.com/file/8409172692/3.JPG
::کد اجرایی صفحه cms.test/posts/create
http://s15.picofile.com/file/8409172718/4.JPG
——————————————————————————–
لطفا جواب رو یه خورده سریع تر از حالت عادی بفرستید .
شفاف و کامل باشه که بتونم متوجه بشم .
ضمن تشکر از ارسال نظر شما
دوست عزیز این آموزش با Laravel 8 آماده و بررسی شده، لطفا یکبار crud مورد نظر خودتون رو مرحله به مرحله مطابق با آموزش ما پیش ببرید.
در اسکرین شاتهایی که ارسال کردین این موارد رعایت نشده
– اکشن فرم شما در فایل Create.blade.php به اشتباه تنظیم شده است.
– با توجه به خطایی که دارید این احتمال وجود داره که در پایگاه داده شما فیلد id در حالت AUTO_INCREMENT تنظیم نشده است.
گام به گام انجام دادم در لاراول 8 اجرا شد و بسیار لذت بردم