آشنایی با فریمورک لاراول
فهرست مطالب
با بخش دیگری از مقالات برنامه نویسی همراه شما عزیزان هستیم.
در این مقاله قصد داریم به یکی از مهم ترین فریمورک های مربوط به طراحی سایت و البته اپلیکیشن های وب بیس ، یعنی فریمورک لاراول بپردازیم.
لاراوال یکی از فریمورک های زبان php می باشد که ما قبلا در مقالاتی به صورت کامل به آشنایی با زبان php پرداخته ایم.
برای آشنایی کامل با لاراول ، کاربرد ها ، ویژگی ها و نحوه ی استفاده از آن تا پایان مقاله با ما همراه باشید.
لاراول چیست
همانطور که گفتیم لاراول یک فریمورک php کراس پلتفرم برای ساخت اپلیکیشن های کاربردی وب است.
اما درک واقعی مزایای لاراول و کاربردهای آن مستلزم یک فرو رفتن عمیق تر است.
لاراول به توسعهدهنده اجازه میدهد تا از کتابخانه بزرگی از قابلیتهای از پیش برنامهریزی شده (مانند احراز هویت، مسیریابی و HTML layout) استفاده کند.
دسترسی به این کتابخانه ساخت سریع برنامه های کاربردی وب را آسان تر می کند و در عین حال میزان کدگذاری لازم را به حداقل می رساند.
لاراول یک محیط توسعه بسیار کاربردی و همچنین رابط های خط فرمان بصری و قابل فهم ارائه می دهد.
علاوه بر این، لاراول ازobject-relational mapping (ORM) برای دسترسی ساده تر به داده ها و ویرایش آن ها استفاده می کند.
برنامه های لاراول بسیار مقیاس پذیر هستند و دارای پایگاه های کد با قابلیت نگهداری آسان هستند.
به لطف packaging system ماژولار لاراول و مدیریت robust dependency، توسعه دهندگان همچنین می توانند به طور یکپارچه عملکردی را به برنامه های خود اضافه کنند.
فریمورک های php
یک فریمورک PHP مجموعه ای از کتابخانه های کد حاوی ماژول های از پیش برنامه ریزی شده را فراهم می کند که به کاربر امکان می دهد اپلیکیشن ها را سریعتر بسازد.
آنها به توسعه دهندگان وب تعدادی مزیت از جمله توسعه سریع تر، کاهش نیاز به نوشتن کد و افزایش امنیت ارائه می دهند.
آنها همچنین به توسعه دهندگان تازه کار کمک می کنند تا شیوه های کدنویسی خوبی را ایجاد کنند، زیرا آنها به سازماندهی خاصی از کد نیاز دارند.
علاوه بر این ، فریمورکهای PHP معمولاً نسبت به برنامههایی که از پایه ساخته شدهاند به تعمیر و نگهداری کمتری نیاز دارند.
بسیاری از فریم ورک های مدرن PHP شی گرا هستند.
به همین دلیل، داشتن درک اولیه از مفاهیمی مانند کلاس ها، اشیاء و وراثت قبل از فرو رفتن در یک فریمورک مفید است.
نحوه کار لاراول
برای درک بهتر آنچه لاراول می تواند انجام دهد، مهم است که بفهمیم لاراول چگونه با درخواست ها، یعنی چرخه عمر درخواست ها برخورد می کند.
همانطور که در بالا توضیح داده شد ، لاراول مبتنی بر معماری MVC است و به درخواستهای کاربران پاسخ میدهد، که کنترلر از آن برای بازیابی و پردازش دادهها از مدل استفاده میکند و اطلاعات را در یک view به کاربر ارائه میدهد.
یک درخواست از طریق فایل public/index.php وارد برنامه لاراول می شود که بقیه فریم ورک را بارگذاری می کند و نمونه ای از برنامه لاراول را بازیابی می کند.
پس از بازیابی نمونه برنامه ، درخواست به هسته کنسول یا هسته HTTP هدایت می شود.
در میان وظایف دیگر ، kernel مجموعهای از بوت استرپرها را تعریف میکند که وظایفی را انجام میدهند که باید قبل از رسیدگی به درخواست تکمیل شوند و همچنین هر میانافزاری را که درخواستها باید قبل از رسیدگی از آن عبور کنند، تعریف میکند.
از جمله این وظایف پیش از مدیریت، بارگیری هر ارائه دهنده سرویس های مورد نیاز برای برنامه است.
هنگامی که بوت استرپینگ کامل شد و provider سرویس ها ثبت شدند، درخواست به روتر ارسال می شود و سپس درخواست را به یک مسیر یا یک کنترلر هدایت می کند.
علاوه بر این، روتر هر میان افزار مورد نیاز مسیر خاص را اجرا می کند.
پس از عبور درخواست از میان افزارهای مورد نیاز، اجرای یک روتر یا کنترلر ، پاسخی را برمی گرداند که از طریق زنجیره به View ارسال می شود.
معماری لاراول
فریمورک های PHP از معماری Model-View-Controller (MVC) استفاده می کنند.
به طور خیلی خلاصه می توان گفت در MVC به نحوی Controller درخواست های کاربر را می گیرد ، اطلاعات مورد نیاز را از Model بازیابی می کند، آن را پردازش می کند و به view برمی گرداند.
برنامه های PHP ، مانند وردپرس ، دارای آسیب پذیری های شناخته شده ای هستند.
قابل توجه ترین نمونه ها تزریق کد و تزریق SQL هستند.
لاراول دارای ویژگی هایی است که به جلوگیری از تزریق SQL و سایر حملات کمک می کند.
(مطالعه ی مقاله ی وردپرس یا کد به شما پیشنهاد می شود.)
با این حال ، توسعه دهندگان باید تلاش های بیشتری مانند تست نفوذ برای اطمینان از امنیت برنامه های خود انجام دهند.
امنیت برنامه های وب شامل تست نفوذ و فایروال های برنامه های وب است که دست به دست هم می دهند.
تستهای نفوذ تستهای پیچیدهتری هستند که توسط متخصصان امنیت سایبری واجد شرایط انجام میشوند ، که سعی میکنند بدون هیچ دانش قبلی از توسعه سیستم شما به منظور شناسایی آسیبپذیریهای امنیتی اصلاحنشده وارد سیستم شما شوند.
مزیت های لاراول
یادگیری آسان
یادگیری لاراول نسبتاً آسان است.
لاراول برای استفاده موثر نیاز به درک کلی از PHP و مفاهیم برنامه نویسی شی گرا (OOP) دارد.
دانستن حداقل مقداری HTML نیز مفید است.
و برای هر معماری MVC، درک سیستم های مدیریت پایگاه داده رابطه ای، مانند MySQL یا PostgreSQL نیز مفید می باشد.
آسان سازی فرآیند توسعه
از ابتدا ، لاراول برای ساده سازی وظایفی که در انواع پروژه های توسعه وب رایج هستند ، مانند مسیریابی ، احراز هویت ، کش کردن و … طراحی شده بود.
لاراول ادغام ماژول های از پیش ساخته شده در یک برنامه را با استفاده از رابط های command line بصری و Composer ساده می کند.
لاراول همچنین دارای مجموعه گسترده ای از داکیومنت های آنلاین است که نقطه شروع خوبی برای توسعه دهندگان با تجربه تر است.
طیف گسترده ای از منابع یادگیری آنلاین که به تمام سطوح مهارت هدایت می شوند و در دسترس هستند.
مقیاس پذیری
لاراول بسیار مقیاس پذیر است.
برنامه های لاراول با پشتیبانی یکپارچه از سیستم های کش سریع و توزیع شده قادر به رسیدگی به میلیون ها درخواست در ماه هستند.
لاراول همچنین یک پلتفرم استقرار بدون سرور به نام Vapor را ارائه می دهد که مبتنی بر AWS است و مقیاس بالایی را ارائه می دهد.
جامعه
لاراول دارای یک اکوسیستم فوق العاده است که توسط جامعه بزرگی از توسعه دهندگان پشتیبانی می شود.
از آنجایی که لاراول یکی از پرکاربردترین فریم ورک های PHP است ، کتابخانه برنامه ها و پکیج های های لاراول در دسترس قابل توجهی است.
هم پکیج های رسمی لاراول و هم پکیج های شخص ثالث به راحتی در دسترس هستند.
پکیج های رسمی لاراول ، شامل احراز هویت ، مدیریت سرور ، صورتحساب اشتراک ، تست مرورگر و اتوماسیون و … است.
پکیج های شخص ثالث در تعدادی از سایت ها از جمله Packalyst و Laravel News در دسترس هستند.
همچنین حجم عظیمی از اطلاعات از جامعه توسعه دهندگان لاراول در دسترس است.
برنامهنویسانی که در پروسه ی برنامه نویسی مشکلاتی را دارند ، مطمئناً با مراجعه به یکی از فرومهای لاراول، مانند Laravel.io، The Laravel subreddit و Laracasts، پاسخی خواهند یافت.
امنیت
لاراول شامل تعدادی ویژگی امنیتی از جمله احراز هویت کاربر، مجوزهای نقش کاربر، تأیید ایمیل، خدمات رمزگذاری، هش رمز عبور و ویژگی های بازنشانی رمز عبور است.
امنیت برنامه ها یکی از مهم ترین عوامل در توسعه برنامه های تحت وب است.
در حین توسعه یک برنامه، یک برنامه نویس باید راه های موثری را برای ایمن سازی برنامه در پیش بگیرد.
لاراول دارای امنیت برنامه وب داخلی است، یعنی خود امنیت یک برنامه را تامین می کند.
از “الگوریتم Bcrypt Hashing” برای تولید رمز عبور salte استفاده می کند به این معنی که رمز عبور به عنوان یک رمز عبور رمزگذاری شده در پایگاه داده ذخیره می شود، نه به صورت یک متن ساده.
Migration
لاراول ورژن کنترل را برای پایگاه داده های برنامه با استفاده از Migration فراهم می کند.
Migration ها نحوه تغییر پایگاه داده را در طول زمان ردیابی می کنند و در صورت لزوم تخریب یا ایجاد مجدد پایگاه داده را آسان تر می کنند.
Templating
Blade موتور templating پی اچ پی لاراول است.
موتورهای templating به تقسیم business logic از قالب HTML کمک می کنند و در نتیجه یک پایه کد ایجاد می شود که راحت تر نگهداری می شود.
بسیاری از ویژگی های لاراول به قالب های Blade متکی هستند.
Blade عملکرد بیشتری نسبت به سایر موتورهای قالب ارائه می دهد زیرا Blade اجازه استفاده از کدهای PHP ساده را می دهد، که دیگر موتورها این کار را نمی کنند.
ذخیره سازی و مدیریت فایل
لاراول از پکیج PHP Flysystem برای ارائه درایورهایی برای کار با انواع filesystems ، از filesystems های لوکال گرفته تا ذخیره سازی مبتنی بر کلود مانند Amazon S3، استفاده می کند.
لاراول همچنین امکان انتقال فایل را با پروتکل انتقال فایل SSH (SFTP) فراهم می کند.
مدیریت خطاها
مدیریت خطاها به صورت خودکار با شروع یک پروژه جدید لاراول پیکربندی می شود.
برنامه های لاراول را می توان در حالت اشکال زدایی اجرا کرد و پیام های خطای دقیقی را برای تمام خطاهایی که رخ می دهد ایجاد کرد.
Artisan
رابط خط فرمان مورد استفاده در لاراول Artisan نام دارد.
این شامل مجموعه ای از دستورات است که به ساخت یک برنامه وب کمک می کند.
این دستورات از فریمورک Symphony گنجانده شدهاند که در نتیجه ویژگیهای افزودنی در لاراول 5.1 (آخرین نسخه لاراول) ایجاد میشود.
Composer
Composer ابزاری است که شامل تمام وابستگی ها و کتابخانه ها می شود.
این امکان را به کاربر می دهد تا با توجه به فریمورک ذکر شده (مثلاً مواردی که در نصب لاراول استفاده می شود) پروژه ای ایجاد کند.
کتابخانه های شخص ثالث را می توان به راحتی با کمک Composer نصب کرد.
تمام وابستگی ها در فایل composer.json که در پوشه سورس قرار می گیرد، یادداشت می شوند.
Modularity
لاراول 20 کتابخانه و ماژول داخلی را ارائه می دهد که به بهبود برنامه کمک می کند.
هر ماژول با مدیریت Composer dependency یکپارچه شده است که به روز رسانی را آسان می کند.
Effective ORM
لاراول حاوی یک ORM داخلی با پیاده سازی آسان PHP Active Record است.
یک ORM موثر به توسعه دهندگان اجازه می دهد تا جداول پایگاه داده را با استفاده از سینتکس ساده PHP بدون نوشتن هیچ کد SQL پیاده سازی کنند.
این یکپارچگی آسان بین توسعه دهندگان و جداول پایگاه داده را ، با ارائه هر یک از جداول با مدل های مربوطه خود فراهم می کند.
ساختارهای لاراول
Packages
Package ها نحوه افزودن توابع به لاراول هستند.
هم پکیج های مستقل و هم پکیج های ویژه برنامه وجود دارد.
Service providers به لاراول می گویند که package resources را کجا بارگیری کند.
لاراول ، مانند بسیاری دیگر از ابزارهای توسعه لوکال ، به داکر متکی است.
Docker یک ابزار مبتنی بر کانتینر است که به توسعه دهندگان این امکان را می دهد تا برنامه های خود را به راحتی ایجاد و اجرا کنند.
با استفاده از کانتینرهای Docker، یک توسعهدهنده برنامه خود را با وابستگیهای آن بستهبندی میکند و آن را بهعنوان یک بسته واحد مستقر میکند.
Command-Line Interfaces
لاراول شامل مجموعهای از command-line interfaces است.
کنسول Artisan شامل دستوراتی است که به توسعه دهندگان کمک می کند تا به سرعت کدهای هسته را بسازند، کارهای تکراری را ساده و خودکار کنند و در نهایت ساخت اپلیکیشن را با سهولت بیشتری تکمیل کنند.
Sail به توسعهدهنده اجازه میدهد تا با Docker، محیط توسعه پیشفرض لاراول، تعامل داشته باشد.
Eloquent
Eloquent یک object-relational mapper (ORM) است که امکان تعامل آسان با پایگاه های داده را فراهم می کند.
با استفاده از معماری MVC ، مدل ها با جداول جداگانه در یک پایگاه داده مطابقت دارند.
با Eloquent ، توسعهدهندگان میتوانند از بازیابی سریع ، درجها و بهروزرسانیهای ساده و تعریف بصری روابط اطمینان داشته باشند.
Homestead
Laravel Homestead یک محیط توسعه است که با ارائه پکیج Vagrant از پیش بسته بندی شده، امکان توسعه را بر روی یک ماشین مجازی فراهم می کند.
Homestead شامل همه چیزهایی است که برای توسعه برنامه لاراول نیاز است، از جمله PHP، MySQL، Nginx، Composer، Redis و موارد دیگر، بنابراین توسعهدهنده نیازی به نصب این پکیج ها بر روی دستگاه لوکال خود ندارد. Homestead به نصب Vagrant و VirtualBox یا Parallels نیاز دارد.
Sail
Sail یک رابط خط فرمان سبک وزن برای تعامل با محیط توسعه پیش فرض Docker لاراول است.
بدون نیاز به تجربه قبلی Docker، Sail یک موقعیت شروع فوق العاده برای ایجاد یک برنامه PHP، MySQL و Laravel مبتنی بر Redis فراهم می کند.
بسیاری از توسعه دهندگان Sail را جایگزین بهتر، راحت تر و همه کاره Homestead می دانند.
Valet
Valet یک محیط توسعه MacOS کوچک ، سریع و بهینه است.
قرار نیست این یک جایگزین کامل برای Sail یا Homestead باشد.
درعوض ، برای افرادی با نیازهای خاص طراحی شده است ، زیرا اگر میخواهید اصول اولیه انعطافپذیری داشته باشید، سرعت فوقالعاده را ترجیح میدهید یا روی دستگاهی با RAM محدود کار میکنید، یک جایگزین عالی ارائه میکند.
Spark
Laravel Spark یک پنل مدیریت صورتحساب است که به کاربران اجازه می دهد اشتراک های خود را ایجاد و مدیریت کنند.
به طور مستقیم از موتوری که بر اساس آن است استفاده می کند.
Spark به Stripe و Paddle به عنوان ارائه دهندگان پرداخت محدود شده است.
Spark هنوز از provider های سفارشی پشتیبانی نمی کند.
با این حال، Spark می تواند از برنامه های شخص ثالث استفاده کند زیرا ممکن است سفارشی شوند.
بهترین محیط توسعه برای لاراول چیست؟
وقتی می خواهید یک محیط توسعه داشته باشید که تمام سرویس های رایج شما در آن نصب شده باشد، Homestead یک گزینه عالی است.
زمانی که میخواهید پروژهها را ایزوله کنید، اما نمیخواهید برای هر یک از آنها یک ماشین مجازی داشته باشید، Docker یک گزینه عالی است.
و اگر قبلاً یک محیط توسعه راه اندازی کرده اید، استفاده از Composer برای افزودن یک پروژه لاراول به آن بسیار ساده است.
فراتر از traditional local setups ، پلتفرمهایی مانند Nimbus میتوانند یک محیط توسعه کاملاً کاربردی و ایزوله را در فضای ابری برای توسعه سراسری فراهم کنند یا بخشهای نیازمند منابع گردش کار را بپذیرند. شما فقط باید VS Code یا قابلیت های ویرایش از راه دور ویرایشگر کد مورد علاقه خود را راه اندازی کنید و شروع به کار کنید.
ایجاد یک پروژه آزمایشی با لاراول
برای آشنایی و درک کامل مفاهیم بالا اجازه دهید یک پروژه ی کوچک و آزمایشی را طبق مراحل زیر با فریمورک لاراول استارت بزنیم :
۱) پروژه خود را ایجاد کنید :
پس از نصب لاراول با اجرای دستور زیر پروژه ی خود را ایجاد کنید:
laravel new todo
۲) پیکربندی پایگاه داده :
ما برای برنامه خود به پایگاه داده نیاز داریم ، بنابراین بهتر است قبل از انجام هر کاری پایگاه داده خود را پیکربندی کنیم.
لاراول از 4 پایگاه داده زیر پشتیبانی می کند :
MySQL
Postgres
SQLite
SQL Server
برای این مثال ، ما از SQLite استفاده خواهیم کرد ، زیرا پیکربندی و استفاده از آن آسان است و شما نیازی به نصب هیچ چیزی به جز ایجاد یک فایل خالی ندارید.
برای سایر پایگاه های داده، باید آن پایگاه داده را در سیستم خود نصب کنید و سپس می توانید بر اساس آن پیکربندی کنید.
لاراول config/database.php را برای پیکربندی پایگاه داده ارائه می کند، اما بهتر است credentials پایگاه داده را در آنجا ذخیره نکنید.
لاراول با فایل پیش فرض .env در روت عرضه می شود.
در فایل کدی مانند زیر پیدا خواهید کرد :
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=homestead
DB_USERNAME=homestead
DB_PASSWORD=secret
بالای تمام 6 خط را با خط زیر 1 جایگزین کنید ، یعنی مقدار db_connection را به sqlite تغییر دهید و بقیه خطوط db را مانند زیر حذف کنید:
DB_CONNECTION=sqlite
اکنون در فهرست پایگاه داده خود، یک فایل ایجاد کنید ؛ database.sqlite (این فایل پایگاه داده با پسوند .sqlite است):
۳) Auth را بسازید :
لاراول همچنین دارای احراز هویت است ؛ به این معنی است که همه چیز مربوط به احراز هویت مانند ورود کاربر، ثبت نام، فراموش کردن رمز عبور، احراز هویت دو مرحلهای و غیره در صورت نیاز از پیش ساخته میشود و به آن Laravel Jetstream میگویند.
دو راه برای اضافه کردن Jetstream به برنامه جدید لاراول وجود دارد :
–jet
flag به لاراول
laravel new todo --jet
از آنجایی که قبلاً پروژه فوق را ایجاد کرده ایم، می توانید آن را از طریق پکیج آنها نیز نصب کنید.
ابتدا jetstream packing را با استفاده از دستور زیر نصب کنید :
composer require laravel/jetstream
Laravel Jetstream از دو پشته ~ Liveware یا Inerta پشتیبانی می کند.
از آنجایی که میخواهیم این پروژه را ساده نگه داریم، بیایید از Livewire استفاده کنیم و با استفاده از دستور زیر jetstream را نصب کنیم:
php artisan jetstream:install livewire
سپس “npm install && npm run dev” را اجرا کنید تا asset های خود را بسازید.
در این مرحله ، تمام تنظیمات انجام شده است و ما آماده شروع بیلد هستیم.
۴) Migrations :
اولین قدم در توسعه هر برنامه وب ، طراحی پایگاه داده است.
لاراول راه بسیار خوبی برای طراحی جداول پایگاه داده ارائه می دهد و می تواند آن را به راحتی بر روی سیستم های مختلف موسوم به ‘Migrations’ منتقل کند.
Migration ها برای ایجاد ، تغییر و همچنین اشتراک گذاری طرح پایگاه داده برنامه استفاده می شود.
آنها با Laravel’s schema builder برای ساخت آسان طرح پایگاه داده استفاده می شوند.
ایجاد Migration برای پایگاه داده شما مزایای زیادی دارد.
شما به راحتی می توانید ساختار پایگاه داده خود را با استفاده از فایل های Migration در تولید یا هر سیستم دیگری بازسازی کنید.
دستور زیر را اجرا کنید:
php artisan make:migration create_tasks_table --create=tasks
migration تازه ایجاد شده خود را در پوشه /database/migrations پیدا خواهید کرد :
حالا بیایید با ویرایش فایل migration ایجاد شده ، دو ستون دیگر به جدول تسک ها اضافه کنیم.
...
public function up()
{
Schema::create('tasks', function (Blueprint $table) {
$table->bigIncrements('id');
$table->string('description');
$table->integer('user_id')->unsigned()->index();
$table->timestamps();
});
}
...
ستون جدید با نام “description” توضیحات تسک ها را ذخیره می کند و ستونی با نام “user_id” شناسه کاربری که تسک را ایجاد کرده است را ذخیره می کند.
ما ” ()unsigned()->index<-” را بعد از user_if اضافه کردیم زیرا یک کلید خارجی از جدول کاربران است.
اکنون ساخت طرح پایگاه داده را به پایان رساندیم.
برای استفاده از این طرح برای ایجاد جداول در پایگاه داده، دستور زیر را اجرا کنید.
دستور Migrate تغییرات ایجاد شده در schema را به پایگاه داده واقعی به روز می کند.
php artisan migrate
۵) مدل های Eloquent
Eloquent به نحوی ORM لاراول است که پیاده سازی Active-record ساده را برای کار با پایگاه داده ارائه می دهد.
هر جدول پایگاه داده می تواند مدل Eloquent مربوطه را داشته باشد.
Eloquent Model موجودیت های پایگاه داده را نشان می دهد و می تواند برای جستجوی داده ها و همچنین درج و به روز رسانی داده ها در جداول استفاده شود.
بنابراین ، بیایید با استفاده از دستور make:model یک مدل برای جدول تسک های خود بسازیم.
php artisan make:model Task
این دستور مانند شکل زیر ، مدل Task را در پوشه App ایجاد می کند.
۶) رابطه یک به چند
از روابط (Relationships) برای اتصال جداول استفاده می شود.
Eloquent راهی برای اتصال مدل های خود از طریق روابط eloquent فراهم می کند.
رابطه یک به چند به این معنی است که یک مدل دارای مقادیر متعددی از مدل دیگر است.
برای مثال ما : تک کاربر می تواند تسک های زیادی داشته باشد بنابراین رابطه یک به چند بین جدول کاربر و جدول تسک ها وجود دارد.
تعریف و استفاده از رابطه Eloquent بسیار آسان است و مزیت آن این است که اصلاً نیازی به ران کردن query ندارید.
Eloquent مدل ها را متصل می کند، بنابراین شما باید فقط از توابع استفاده کنید.
بیایید مدل Task و مدل کاربر را برای ایجاد رابطه Eloquent ویرایش کنیم :
مدل Task (task.php موجود در app/task.php):
...
use App\Models\User;
class Task extends Model
{
public function user()
{
return $this->belongsTo(User::class);
}
}
مدل کاربر (user.php موجود در app/user.php) :
...
use App\Models\Task;
class User extends Authenticatable
{
...
public function tasks()
{
return $this->hasMany(Task::class);
}
}
۷) Artisan Tinker – (کاملا اختیاری)
لاراول یک رابط خط فرمان به نام Artisan ارائه می دهد.
Artisan شامل دستورات مختلفی است که از میان آنها، اکنون در مورد Tinker صحبت خواهیم کرد.
Tinker به شما اجازه می دهد تا بدون نیاز به دسترسی به رابط وب با کل برنامه لاراول خود از طریق پنجره کنسول تعامل داشته باشید.
مزیت اصلی tinker این است که میتوانید روابط را آزمایش کنید ، دادهها را اشکالزدایی کنید و به Eloquent ORM، jobs، آزمایشها، رویدادها و … دسترسی پیدا کنید.
بنابراین ما از Tinker در آموزش لاراول خود نیز استفاده خواهیم کرد.
فرض کنید در برنامه ثبت نام کرده اید و دو تسک ایجاد کرده اید.
اکنون آن تسک ها را مستقیماً در پنجره کنسول به صورت زیر بررسی می کنید:
$ php artisan tinker
>App\User::first()->tasks;
Tinker به طور مستقیم به پایگاه داده دسترسی دارد ، بنابراین این یک ابزار عالی برای آزمایش عملکردها و همچنین داده ها است.
۸) کنترلر ها
کنترلرها برای هدایت ترافیک بین view ها و مدل ها استفاده می شوند و می توانند منطق رسیدگی به درخواست های متعدد را در یک کلاس واحد گروه بندی کنند.
بنابراین ، عموماً تمام درخواستها را دریافت میکنند و بر اساس منطق خود ، دادههای مربوطه را تغییر مسیر داده یا برمیگردانند.
در مثال ما ، اکنون به سمت front-end حرکت میکنیم، بنابراین باید کنترلرهایی بسازیم که از طریق آنها بتوانیم درخواستهایی را که به برنامه ما میآیند رسیدگی کنیم.
دستور زیر را برای ایجاد کنترلر برای تسک ها اجرا کنید :
php artisan make:controller TasksController
با این کار TasksController ایجاد می شود و می توانید آن را در فهرست برنامه/Http/Controllers پیدا کنید.
۹) Routing
Routing به معنای پذیرش درخواست و هدایت آن به عملکرد مناسب است.
برنامه ما به پنج مسیر نیاز دارد که به شرح زیر است :
- وارد شدن
- ثبت نام
- نمایش لیست تمام تسک های ما
- اضافه کردن تسک های جدید
- تسک های موجود را حذف کنید
لاگین و ثبت نام توسط Laravel Jetstream اضافه شده است ، بنابراین اکنون باید تنها از سه مسیر مراقبت کنیم.
لاراول فایل های مسیرهای مختلفی را در پوشه ‘/routes’ برای موارد استفاده مختلف فراهم می کند.
به عنوان مثال : پیکربندی روتینگ برای API در فایل ‘/routes/api.php’ قرار می گیرد در حالی که پیکربندی روتینگ برای برنامه وب معمولی ما در ‘/routes/web.php’ می رود.
حالا بیایید web.php را ویرایش کنیم.
در زیر نسخه ویرایش شده فایل آمده است.
بر این اساس تغییراتی ایجاد کنید :
group(function(){
Route::get('/dashboard',[TasksController::class, 'index'])->name('dashboard');
Route::get('/task',[TasksController::class, 'add']);
Route::post('/task',[TasksController::class, 'create']);
Route::get('/task/{task}', [TasksController::class, 'edit']);
Route::post('/task/{task}', [TasksController::class, 'update']);
});
در اینجا ، ما دو تغییر انجام داده ایم :
ما همه مسیرها را گروه بندی کردهایم تا بتوانیم auth:sanctum و میانافزار تأییدشده را برای همه مسیرها اعمال کنیم و بدین ترتیب آن صفحات را فقط به کاربران تأیید شده و وارد شده محدود کنیم.
ما مسیر داشبورد را تغییر دادهایم ، که اکنون درخواست را به تابع فهرست TaskController ارسال میکند.
و روت هایی برای اقدامات دیگر ایجاد کرد.
۱۰) Views – Blade Templates
View ها در فهرست resources/views ذخیره می شوند.
View ها قسمت فرانت اند برنامه لاراول هستند و منطق برنامه را از منطق presentation جدا می کند.
ما باید View های زیر را ایجاد و طراحی کنیم :
dashboard.blade.php (داشبورد لیست تسک ها را نشان می دهد)
add.blade.php (فرمی که به شما امکان می دهد تسک جدید اضافه کنید)
edit.blade.php (فرمی که به شما امکان می دهد هر تسکی را ویرایش کنید)
لاراول با layout مناسبی عرضه میشود که حاوی نوار ناوبری به نام app.blade.php است که در فهرست Views/layouts قرار دارد.
با کمک موتور blade لاراول ، می توانید صفحات خود را به بخش های فرعی تقسیم کنید و همچنین می توانید از قسمت پیش فرض نوار ناوبری لاراول در View های جدید خود استفاده کنید.
اکنون در پوشه /resources/views، فایل های add.blade.php و edit.blade.php را با نشانه گذاری زیر ایجاد کنید.
//here goes your page header
//here goes your body content
در dashboard.blade.php نیز همه کدها را با کد بالا جایگزین کنید.
ما بعداً پس از تعریف توابع کنترلر خود با استفاده از مفهوم Route-Model Binding، ویو ها را ویرایش خواهیم کرد.
۱۱) Route-Model Bindng
لاراول دارای ویژگیهای شگفتانگیزی است که توسعه وب را آسان، تمیز و زمانبرتر میکند.
در این میان ، یکی از برجسته ترین ویژگی های Route-Model Binding است.
این مکانیزمی است برای تزریق یک نمونه مدل به روت های شما.
به این معنی که می توانید آبجکت مدل را به روت ها و همچنین به view ها منتقل کنید که به شما کمک می کند تا مقادیر آبجکت را به راحتی در view دریافت کنید.
اگر توضیح گیج کننده است نگران نباشید ؛ با گذشت زمان، شما با آن آشنا خواهید شد.
حالا بیایید توابع handling روت های بالا را به TasksController.php اضافه کنیم. باید شبیه زیر باشد.
user()->tasks();
return view('dashboard', compact('tasks'));
}
public function add()
{
return view('add');
}
public function create(Request $request)
{
$this->validate($request, [
'description' => 'required'
]);
$task = new Task();
$task->description = $request->description;
$task->user_id = auth()->user()->id;
$task->save();
return redirect('/dashboard');
}
public function edit(Task $task)
{
if (auth()->user()->id == $task->user_id)
{
return view('edit', compact('task'));
}
else {
return redirect('/dashboard');
}
}
public function update(Request $request, Task $task)
{
if(isset($_POST['delete'])) {
$task->delete();
return redirect('/dashboard');
}
else
{
$this->validate($request, [
'description' => 'required'
]);
$task->description = $request->description;
$task->save();
return redirect('/dashboard');
}
}
}
در اینجا می بینید که من آبجکت”Task $task” را در تابع و همچنین آبجکت “Request $request” را با کمک مکانیزم Binding Route-model ارسال می کنم.
توجه : فراموش نکنید که ‘use App\Models\Task;’ را اضافه کنید.
در غیر این صورت “;use App\Models\Task” را دریافت خواهید کرد.
۱۲) ویرایش view ها :
اکنون توابع کنترلر خود را تنظیم کرده ایم و ویو های مناسب را با آبجکت های مدل پیوست شده برمی گردانیم.
بنابراین اکنون ، باید ویو های خود را به گونه ای ویرایش کنیم که در صورت لزوم و داده های مورد نیاز، فرم را با استفاده از آبجکت های مدل عبور داده شده از روت ها نمایش دهد.
نمایش tasks page
dashboard.blade.php را باز کرده و به شکل زیر ویرایش کنید.
{{ __('Dashboard') }}
Tasks List
Task
Actions
@foreach(auth()->user()->tasks as $task)
{{$task->description}}
Edit
@endforeach
نکته :
موتور قالب Blade به ما این امکان را می دهد که از php در داخل HTML بدون محصور کردن آن در داخل “<?php ?>” استفاده کنیم.
افزودن صفحه ی جدید task
add.blade.php را باز کرده و به صورت زیر ویرایش کنید:
{{ __('Add Task') }}
نکته:
{{ ()csrf_field }} برای تولید توکن csrf و درج در فرم استفاده می شود.
این نشانه برای تأیید اینکه کاربر ثبت نام شده احراز هویت شده کسی است که در برنامه درخواست می کند استفاده می شود.
این ویژگی امنیتی ارائه شده توسط لاراول خارج از پکیج است.
ویرایش task page
edit.blade.php را باز کرده و به صورت زیر ویرایش کنید.
{{ __('Edit Task') }}
پس از ویرایش این view ، تمام قطعات به هم متصل می شوند ، بنابراین اکنون می توانید برنامه خود را آزمایش کنید.
ابتدا ثبت نام کنید و سپس وارد شوید و سپس بررسی کنید که آیا می توانید تسکی ایجاد ، ویرایش و یا حذف کنید.
۱۳) پروژه را در Localhost اجرا کنید
برای اجرای پروژه، دستور زیر را در پنجره ترمینال اجرا کنید
– php artisan serve
مطمئن شوید که در روت برنامه خود در ترمینال هستید.
منابع
مهرسا امینی
برنامه نویس ، انیماتور ، سئوکار
زمان های سخت می گذرند اما آدم های سخت می مانند.