<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>پست‌های انتشارات آموزشگاه لاراول فارسی</title>
        <link>https://virgool.io/avasam-laravel-edu/feed</link>
        <description>کانال رسمی لاراول در ایران و به زبان فارسی. آخرین نسخه ی منتشر شده : https://laravel.com/</description>
        <language>fa</language>
        <pubDate>2026-04-14 09:27:55</pubDate>
        <image>
            <url>https://files.virgool.io/upload/publication/ewvcz3rwu75o/ukxca9.png</url>
            <title>آموزشگاه لاراول فارسی</title>
            <link>https://virgool.io/avasam-laravel-edu</link>
        </image>

                    <item>
                <title>روش اصولی و اساسی آنلاین کردن پروژه لاراول</title>
                <link>https://virgool.io/avasam-laravel-edu/%D8%B1%D9%88%D8%B4-%D8%A7%D8%B5%D9%88%D9%84%DB%8C-%D9%88-%D8%A7%D8%B3%D8%A7%D8%B3%DB%8C-%D8%A2%D9%86%D9%84%D8%A7%DB%8C%D9%86-%DA%A9%D8%B1%D8%AF%D9%86-%D9%BE%D8%B1%D9%88%DA%98%D9%87-%D9%84%D8%A7%D8%B1%D8%A7%D9%88%D9%84-n6v5hz9quduf</link>
                <description>دسترسی به روشی اصولی و اساسی به هدف آنلاین کردن پروژه لاراول، یکی از موضوعات مهم در توسعه وب است. لاراول را می‌وان به عنوان یک فریم ورک بسیار قدرتمند معرفی کرد. این ابزار می‌تواند برای توسعه دهندگان وب به هدف اجرای پروژه‌های خود، بسیار کاربردی باشد. با استفاده از لاراول توسعه برنامه‌های وب بر روی سرور محلی، به صورت پیش‌فرض انجام می‌شوند. اما بحث آنلاین کردن پروژه Laravel کمی متفاوت بوده و مستلزم استفاده از یک روش مناسب است. در این مقاله قصد داریم یک ساز کار اصولی و اساسی را، به هدف پیاده‌سازی پروژه لاراول در سرور آنلاین را به شما کاربران محترم معرفی کنیم. اگر از جمله توسعه دهندگان وب سایت هستید، این مقاله آموزشی می‌تواند برای شما بسیار کاربردی و البته خواندنی باشد. پس تا انتهای مقاله ما را همراهی کنید.آنلاین کردن پروژه لاراولدرباره اهمت آنلاین کردن پروژه لاراولهر روز شاهد رشد و استقبال استفاده از فناوری‌های آنلاین هستیم. به همین خاطر پروژه‌های متفاوتی مانند پروژه React به هدف بهبود در عملکرد و دسترسی آسان‌تر، آنلاین می‌شوند. Laravel نیز از جمله قدرتمندترین فریم‌ورک‌ها به هدف توسعه برنامه‌های وب است. ای فریم‌ورک با استفاده از روش‌های اصولی در سرور آنلاین قابل پیاده‌سازی است. اما آنچه که اهمیت دارد، انتخاب یک روش اصولی و اساسی برای آنلاین کردن پروژه لاراول است. به واسطه اجرای این فرایند توسعه‌دهندگان وب می‌تواند از طریق اینترنت به پروژه لاراول دسترسی داشته و فرآیندها را مدیریت کنند. پروژه لاراول بر پایه زبان php ساخته شده است. بر اساس اجرای لاراول با کمترین تلاش و به سادگی برنامه‌های پیچیده وب انجام است. اما اگر بخواهید از طریق محیط آنلاین به این پروژه دسترسی داشته باشید، موضوع انتخاب نحوه مدیریت پروژه و نحوه آپلود پروژه لاراول بسیار مهم خواهد بود.در این میان روش‌های ساده به هدف نصب پروژه لاراول در سرور و آپلود فایل‌ها وجود دارند. اما ما در این مقاله به دنبال معرفی روش‌های اصولی و اساسی برای آنلاین کردن پروژه Laravel هستیم. اما نکته حائز اهمیت این است که هیچ روش مشخص و اصولی به هدف آنلاین کردن لاراول وجود ندارد. پس هدف ما معرفی روشی بهترین در بین راه‌کارهای موجود است.معرفی مزایای آنلاین کردن پروژه Laravelنصب و راه‌اندازی لاراول در سرور محلی می‌تواند از شرایط آسان‌تری برخوردار باشد. اما آنلاین کردن پروژه لاراول به دلیل داشتن ساختاری متمایز، با چالش‌های مختلفی همراه است. وقتی یک پروژه لاراول آنلاین می‌شود، یعنی پروژه بر روی اینترنت قرار می‌گیرد. پس توسعه دهندگان از هر جایی می‌توانند به پروژه دسترسی داشته باشند. بر این اساس اجرای آنلاین کردن پروژه Laravel شرایط همکاری تیمی را در سرتاسر جهان فراهم خواهد آورد. شرایط اشتراک گذازی پروژه نیز به صورت همزمان امکان‌پذیر خواهد بود. همچنین بر اساس اجرای این راهکار، توسعه‌دهندگان خواهند توانست به راحتی شرایط پشتیبان‌گیری و نسخه‌برداری از پروژه، رفع خطاها و حتی تست مراحل پروژه را نیز به راحتی انجام دهند.دسترسی آسان به پروژه Laravel:آنلاین کردن پروژه لاراول شرایط دسترسی همه اعضای تیم پروژه بدون نیاز به نصب لاراول و اعمال تنظیمات، پیکربندی سخت‌افزاری را فراهم می‌آورد. بر این اساس تسهیل در اجرای فرایندها، انتقال و استقرار پروژه به واسطه پیاده‌سازی بر روی یک سرور آنلاین فراهم می‌شود.همکاری و همزمان‌سازی اعضای تیم پروژه Laravel:وقتی به واسطه یک سرور آنلاین پروژه لاراول پیاده‌سازی می‌شود، اعضای تیم پروژه می‌توانند در یک مخزن مشترک به صورت همزمان و هماهنگ تغییرات را بر روی پروژه اعمال کنند. این هماهنگی شرایط تسریع و بهبود در اجرای فرایندهای توسعه پروژه لاراول را به همراه خواهد داشت. حتی با اجرای این راهکار فرایندهای اجرایی بر روی پروژه Laravel برای همه اعضای تیم قابل مشاهده خواهد بود. علاوه بر آن کاهش ایجاد اختلال در انتخاب و اعمال کدها و عدم همگام‌سازی بین توسعه‌دهندگان را نیز، اجرای این راه‌کار فراهم خواهد آورد.نگهداری راحت‌تر از کدهای پروژه Laravel:بحث نگهداری ساده در زمان آنلاین کردن پروژه لاراول به بکاپ‌گیری از پروژه مربوط است. با استفاده از این روش شرایط بکاب‌گیری و نسخه‌برداری version control آسان خواهد شد. با این اتفاق توسعه دهندگان وب می‌توانند در زمان مشاهده خطا شرایط پروژه را به حالت قبل از خطا برگردانند. با استفاده از این راهکار نگهداری از کدها، به روز‌رسانی و اعمال تغییرات جدید، اجرای تنظیمات محلی و بکاپ‌ دیتاها به ازای ذخیره تغییرات و  آپديت منظم فراهم خواهد شد.استفاده از منابع عمومي در پروژه Laravel:با اجرای این راه‌کار، استفاده و دسترسی به منابع و ابزارهای مورد استفاده تیم پروژه نیز عمومی خواهد شد. یعنی پس از آنلاین کردن پروژه لاراول، دسترسی به صورت رایگان به ابزارها و منابع عمومی که اعضای پروژه توسعه داده‌اند میسر خواهد شد. منابعی مانند کتابخانه‌ها، داکیومنت‌ها، ابزارهای توسعه و غیره. استفاده از منابع عمومی در پروژه لاراول می‌تواند بسیار مفید باشد. چرا که شرایط صرفه‌جویی در زمان را به همراه خواهد داشت. بر این اساس وقتی دسترسی به منابع آسان شود، نیاز به توسعه و پیاده‌سازی جدید نخواهد بود. توسعه دهندگان می‌توانند با استفاده از کدهایی که قبلا اعمال و استفاده کرده‌اند، نسبت به اجرای اهداف جدید اقدام کنند.آنلاین شدن پروژه لاراول، بازگشت سرمایه و صرفه‌جویی در زمان را نیز به دنبال دارد. از طرف دیگر با آنلاین کردن پروژه Laravel و دسترسی به منابع، خطاها و مشکلات موجود در قسمت‌های مختلف پروژه راحت‌تر شناسایی و حل می‌شود. به همین منظور بهبودی در کیفیت و عملکرد پروژه را شاهد خواهید بود.تست و عيب‌يابي در پروژه Laravel:یکی از نکات مهمی که باید در هنگام اجرای پروژه لاراول به آن توجه شود، ارزیابی و بررسی صحت عملکرد کدها است. از جمله مزیت‌های آنلاین کردن پروژه لاراول، اجرای راحت‌تر عیب یابی و تست در قسمت‌های مختلف پروژه است. اجرای تست شرایط بررسی و ارزیابی دقیق عملکرد کدها و عیب‌یابی خطاهای ممکن، در پروژه لاراول را به دنبال خواهد داشت. در این حالت رفع اشکالات موجود در کدها، تضمین کیفیت نرم‌افزار، بهبود کارایی و بهینه‌سازی پروژه و البته جلوگیری از بروز خطاهای آتی امکان‌پذیر می‌شود. اجرای تست عملکردهای مختلف پروژه لاراول در محیط آنلاین، با استفاده از ابزارهای تست خودکار مانند PHPUnit انجام‌پذیر است.با استفاده از این ابزار شرایط اعمال تست‌های Feature Tests، تست‌های Unit Tests و تست‌های Browser Tests بر روی پروژه لاراول اجرا خواهد شد. از طرف دیگر با آنلاین کردن پروژه لاراول، شرایط اشکال‌زدایی خطاهای پروژه مانند خطاهای ممکن در کدهای PHP، SQL Query های ناموفق، Requests  و Cache  با استفاده از ابزار Debugging انجام شدنی خواهد بود.معرفی بهترین روش برای آنلاین کردن یک پروژه لاراولهمانطور که قبلا به آن اشاره کردیم، هیچ روش یکتایی برای آنلاین کردن پروژه لاراول وجود ندارد. توسعه دهندگان وب بر اساس سلیقه و ابزارهایی که در اختیار دارند می‌توانند، از بین روش‌ها بهترین روش را برای خود انتخاب کنند. در ادامه مقاله با چند روش به هدف آنلاین کردن یک پروژه لاراول آشنا خواهید شد. این روش‌ها در دو گروه سرویس‌های هاست لاراول و سرویس‌های ابری تقسیم‌بندی می‌شوند. پس از آن با توجه به نظر توسعه دهندگان وب، روشی که بیشتر از همه می‌تواند برای آنلاین شدن پروژه لاراول موثر باشد را معرفی خواهیم کرد.سرویس‌های هاست لاراولاستفاده از سرویس‌های میزبانی لاراول یا Laravel Hosting Services، ابزارهای قدرتمندی هستند که به توسعه‌دهندگان اختیارات زیادی خواهند داد. آنها می‌توانند پروژه لاراول را به راحتی در یک سرور آنلاین مستقر و پیاده‌سازی کنند. در این خصوص می‌توان به سرویس‌هایی مانند Laravel Forge، Laravel Vapor و Laravel Homestead اشاره داشت. هر کدام از این سرویس‌ها به هدف آنلاین کردن پروژه لاراول، از شاخصه‌ها و ویژگی‌های منحصر به فردی برخوردارند.سرور‌های ابری Cloud و مجازیعلاوه بر استفاده از روش‌ها و سرورهای هاست لاراول، سرور‌های ابری و مجازی نیز می‌توانند شرایط آنلاین کردن پروژه لاراول را فراهم آورند. با استفاده از این نوع سرورها توسعه‌دهندگان قادر خواهند بود، با قابلیت‌های بیشتر شرایط استقرار پروژه‌های لاراول در فضای آنلاین را با توجه به نیاز خود پیاده‌سازی کنند. در ادامه با دو نوع سرور‌ ابری AWS و سرور مجازی DigitalOcean آشنا می‌شوید.سرور‌های ابری AWS :سرور‌های ابری AWS (Amazon Web Services ) را می‌توان به دو مدل AWS Elastic Beanstalkو Amazon EC2 تقسیم کرد. هرکدام از این مدل‌ها ویژگی‌های مشخصی دارند. مدل سرور AWS Elastic Beanstalk به توسعه دهندگان این امکان را می‌دهد تا بتوانند، پروژه لاراول خود را با چند کلیک در AWS پیاده سازی کنند. حتی با استفاده از این ابزار، مدیریت تمام جزئیات مورد نیاز برای راه‌اندازی و پشتیبانی پروژه لاراول نیز امکان‌پذیر خواهد بود. این سرویس از طرف کمپانی آمازون مدیریت می‌شود. توسعه دهندگان خواهند توانست برنامه‌های وب را به راحتی و با سرعتی بالا در محیط‌های ابری مستقر کنند. شرایط آنلاین کردن پروژه لاراول و راه‌اندازی آن در محیط AWS با استفاده از از ابزار Elastic Beanstalk، بسیار کاربردی خواهد بود.معرفی مدل سرور بعدی را به سرور ابری از جمله محصولات کمپانی آمازون یعنی مدل Amazon EC2 اختصاص می‌دهیم. با استفاده از این ابزار توسعه دهندگان قادر خواهند بود پروژه لاراول خود را به راحتی در محیط سرور ابری پیاده سازی کنند. استفاده از این ابزار شرایط کنترل کافی پروژه را به توسعه دهندگان ارائه می‌دهد. یعنی توسعه‌دهندگان وب اجازه دارند نسبت به استفاده از منابع سخت‌افزاری و انتخاب نوع سخت‌افزار، قدرت انتخاب داشته باشند.سرور‌های مجازی Droplets :این ابزار از جمله محصولات شرکت DigitalOceanاست. به کاربران و توسعه دهندگان وب اجازه می‌دهد تا سرورهای مجازی خود را، در قالب محیط ابر پیاده‌سازی کرده و آن را مدیریت کنند‌. از طرف دیگر توسعه دهندگان وب با استفاده از سرور مجازی Droplets قادر خواهند بود سرورهای خود را با تنظیمات دلخواه در محیط ابر مستقر کنند. حتی شرایط برای پیکربندی و نصب سخت‌افزار‌ها به طور دلخواه نیز برای توسعه‌دهنگان میسر است. به همین منظور شرایط آنلاین کردن پروژه لاراول در سرور مجازی Droplets می‌تواند یک انتخاب کاربردی باشد. چرا که از رابط کاربری ساده و قابل فهمی برخوردار است. حتی تغییر حجم منابع نصب صفحات ssl ، پشتیبانی 24 ساعته و غیره نیز برای کاربران فراهم خواهد بود. با استفاده از سرور مجازی Droplets، کاربری یکپارچه مطابق با GitLab و GitLab CI/CD را توسعه دهندگان وب تجربه خواهند کرد.آموزش استفاده از روش AWS برای آنلاین کردن یک پروژه لاراولروش‌ها و راهکارها و ابزارهای مختلفی به هدف آنلاین کردن پروژه لاراول معرفی شد. اما با توجه به نظر کارشناسان بهترین راهکار استفاده از روش AWS به هدف استقرار پروژه لاراول در محیط آنلاین است. برای اینکه بتوانید یک پروژه لاراول را با استفاده از روش AWS آنلاین کنید مراحل زیر را انجام دهید.مرحله اول – افتتاح حساب در AWS :ابتدا باید در زمینه افتتاح یک حساب AWS اقدام کنید. برای این اقدام ابتدا باید به صفحه https://aws.amazon.com  مراجعه کنید. در ادامه با انتخاب گزینه Create an AWS Account شرایط ورود به صفحه مدیریت حساب برای شما فراهم خواهد شد. در اینجا باید اطلاعات شخصی به هدف ثبت نام را به سیستم معرفی کنید. پس از انجام مراحل قبل به مرحله تایید هویت خواهید رسید. وقتی سیستم هویت شما را تایید کند، به قسمت تعیین جزئیات پرداخت می‌رسید. در اینجا حساب شخصی یا حقوقی و نوع پروژه شغلی یا غیر شغلی را باید انتخاب کنید. در مرحله بعد با انتخاب گزینه I have read and agree to the AWS Customer Agreement شما قوانین ثبت نام در وب‌سایت AWS را پذیرفته‌اید. حالا می‌توانید وارد پنل خود شوید.مرحله دوم – ایجاد سرور EC2 :پس از ورود به پنل، باید نسبت به ایجاد یک سرور جدید به هدف آنلاین کردن پروژه لاراول اقدام کنید. به همین خاطر به قسمت EC2 رفته و با تعیین تنظیمات دلخواه شرایط را ادامه دهید. در این قسمت دسترسی‌های متفاوتی به کاربر ارائه خواهد شد. کاربر می‌تواند نوع سرور مانند ( Instance )، سایز و تعداد منابع مانند ( RAM &amp; CPU ) را تعیین کند.مرحله سوم – نصب سیستم عامل :وقتی در مرحله قبل سرور EC2 را ایجاد کردید، حالا نوبت به نصب سیستم عامل می‌رسد. برای این کار می‌توانید از AMI های (Amazon Machine Image ) پایه استفاده کنید. یا حتی از ساختار CloudFormation به هدف نصب خودکار برخوردار شوید. انتخاب با کاربر است.مرحله چهارم – نصب PHP و MySQL :در مرحله چهارم بعد از اینکه توانستید سیستم عامل را با موفقیت نصب کنید، باید نسبت به نصب php و MySQL اقدام کنید. کاربر می‌تواند هم به صورت دستی این کار را انجام دهد و هم می‌تواند، با استفاده از منابع آموزشی AWS فرایند را دنبال کند.مرحله پنجم – نصب Composer :نصب Composer همان چهارچوب php است. اینکار به کاربر در زمینه مدیریت پکیج‌های لاراول به هدف آنلاین کردن پروژه لاراول کمک خواهد کرد. کاربر باید Composer را بر روی سرور خود نصب کند. در ادامه پروژه لاراول با استفاده از آن در سرور EC2 اعمال خواهد شد.مرحله ششم – Clone پروژه Laravel :در این مرحله باید از یک مخزن repository موجود در سرویس‌های نسخه‌گیری مانند GitHub، کپی برداری و دریافت کامل پروژه Laravel انجام شود. به این کار Clone پروژه Laravelمی‌گویند. به هدف اجرای این فرایند، باید از دستور git clone به همراه آدرس مخزن استفاده شود. پس از آن کاربر می‌تواند تمام فایل‌ها و تنظیمات لازم برای اجرای پروژه Laravel را دریافت کند. در ادامه کاربر اجازه دارد که در دستگاه خود، به صورت آفلاین و بدون نیاز به اتصال اینترنت نسبت به اعمال تغییرات در پروژه اقدام کند. حتی می‌تواند با استفاده از Git، تغییرات اعمالی را به سرویس انتقال دهد.مرحله هفتم – تغيير فایل .env :در فرایند‌ آنلاین کردن پروژه لاراول، فایل .envبه تنظیمات محیطی مربوط است. همان تنظیماتی که برای اجرای پروژه لاراول مورد نیاز است. این فایل متشکل است از متغیرهای محیطی. پس می‌تواند تعیین کننده تنظیمات مختلف پروژه باشد. مانند اطلاعات پایگاه داده، تنظیمات احراز هویت، تنظیمات ارسال ایمیل و غیره. این فایل در آنلاین کردن پروژه Laravel شامل تنظیمات پیش فرض بوده و در حالت لوکال قابل دسترس است. با انتقال پروژه به محیط آنلاین، کاربر باید این فایل را با تنظیمات مناسب برای سرویس دهنده آنلاین بروزرسانی کند. یعنی تغییرات لازم و اطلاعات جدید را در این فایل بر اساس شرایط پروژه تغییر دهد. در ادامه کاربر باید با استفاده از متغیر‌های محيطي سرويس دهنده خود مانند cPanel یا Plesk، جزئيات پروژه مانند نام کاربري و رمز عبور به سرويس دهنده را معرفی کند. این کار در بخش Environment Variables یا به صورت ايميل انجام خواهد شد.مرحله هشتم – کاربری از  Run Migrations :به هدف آنلاین کردن پروژه لاراول، Run Migrations به تغییراتی اشاره دارد که در فایل‌های مربوط به DB  (database) اعمال شده‌اند. ممکن است در ادامه مه پروژه تغییراتی در ساختار جداول یا داده‌های موجود پایگاه داده اعمال شود. این تغییرات باید ثبت شود. به همین هدف و به نیت روزرسانی DB ، باید از Migrations با دستور php artisan migrateاستفاده شود. در آنلاین کردن پروژه Laravel، Migrationsبه کاربر این امکان را می‌دهد که ساختار جدول را با استفاده از کدهای PHP تعریف کند. در ادامه باید تغییرات بررسی شود و همچنین جدول‌های جدید اضافه و جدول‌های قبلی را به روزرسانی شود.مرحله نهم – تغيير DNS :برای آنلاین کردن پروژه لاراول، تغییر DNS (Domain Name System ) به معنای تغییر نام دامنه سرورها است. DNS سیستمی است که نام دامنه را به آدرس IP متناظر آن تبدیل می‌کند. در زمان اجرای مرحله تغيير DNS، توسعه‌دهندگان وب می‌توانند نام دامنه پروژه لاراول خود را به سرویس دهنده ابری ماننده (AWS ) معرفی کنند. حتی نام دامنه پروژه را به سرورهای هاستینگ مانند (Google Cloud Platform ) نیز معرفی نمایند. بر این اساس با توجه به به این کار، وقتی کاربر نام دامنه را در مرورگر وارد می‌کنند، به یک سرور جدید هدایت خواهند شد. در ادامه پروژه لاراول شما آنلاین می‌شود.مرحله دهم – نصب SSL Certificate (optional ) :موضوع اجرای راه‌کارهای امنیتی نیز در فرایند اجرای آنلاین کردن پروژه لاراول بسیار مهم ست. SSL Certificate در پروژه آنلاین شدن لاراول به همین موضوع اشاره دارد. SSL Certificate یک فایل رمزگذاری شده است. این قابلیت بین مرورگر کاربر و سرور، ارتباطی امن را فراهم خواهد آورد. در این حالت پس از نصب SSL Certificate، اطلاعاتی که بین مرورگر و سرور منتقل می‌شوند رمزگذاری خواهند شد. این اتفاق امنیت در این ارتباط را به همراه دارد. کاربر در این حالت می‌تواند تا با استفاده از HTTPS، به سایت شما دسترسی داشته باشد. HTTPS به عنوان یک پروتکل امن شناخته می‌شود. این پروتکل با استفاده از SSL Certificate، از حریم خصوصی کاربران ( آنلاین کردن پروژه Laravel ) حفاظت خواهد کرد. برخورداری از SSL Certificate در پروژه لاراول الزامی نیست. اما نصب و استفاده از SSL Certificate را به کاربران توصیه می‌کنیم.به دلیل اینکه شاید در پروژه بخواهید یک فروشگاه آنلاین را پیاده‌سازی کنید. پس بحث ارتقا امنیت و صیانت از اطلاعات حساس کاربران مطرح خواهد شد. مانند رمز عبور و شماره کارت بانکی و غیره. برخورداری از امنیت و عدم سرقت اطلاعات با استفاده از SSL Certificate در زمان ارسال اطلاعات کاربران به سرور، موضوع بسیار مهمی خواهد بود.مرحله یازدهم – Configure Security Groups and Firewall :در فرایند آنلاین کردن پروژه لاراول، از مجموعه تنظیمات مشخص فایروال استفاده خواهد داشت. این موارد محیطی امن و حفاظت شده‌ای را برای پروژه لاراول فراهم خواهند آورد. به این تنظیمات Configure Security Groups and Firewall می‌گویند. با استفاده از این تنظیمات، توسعه‌دهندگان وب می‌توانند کنترل ورودی و خروجی‌های پروژه را در دست بگیرند. می‌توانند به راحتی قوانین امنیتی مشخصی را برای سرور خود تعریف کنند. به طور کلی، Security Groups به توسعه‌دهندگان وب این اجازه را می‌دهد که مشخص کنند، تا کدام IP ها چه نوع دسترسی ( مانند HTTP، SSH، FTP ) را به سرویس‌‌‌ها داشته باشند. یعنی می‌توانند با تنظیم این موارد امنیتی و فایروال، به هدف دسترسی به سرویس‌ها و پورت‌ها و آدرس‌های آی‌پی، محدودیت‌ها و قوانین مشخصی را اعمال نمایند. توسعه‌دهندگان وب با کاربری از Security Groups می‌توانند نسبت به استفاده از منبع SSH یا HTTP انتخاب کنند.مزایاس استفاده از روش AWS برای Online کردن پروژه لاراولکاربری از روش AWS به هدف آنلاین کردن پروژه لاراول، از مزایا و فواید مختلفی مانند داشتن هزینه مناسب و پشتیبانی مطلوب برخوردار است. در ادامه با دیگر مزایای استفاده از این روش آشنا می‌شوید.مقیاس پذیر استیعنی کاربر با استفاده از سرویس AWS می‌تواند با سرعتی مطلوب بر اساس نیاز کاربران مقیاس پذیر کند. کاربران با استفاده از ابزارهایی مانند EC2 و Auto Scaling، می‌توانند به صورت خودکار در تعداد سرورها تغییر ایجاد کنند. همچنین با استفاده از ابزار Elastic Load Balancer، قادر خواهند بود بار ترافیک بین سرورها را عادلانه انتقال و توزیع دهند.از عملکرد بالایی برخوردار استاستفاده از روش AWS به کاربر و توسعه دهندگان وب این اجازه را می‌دهد تا بدون محدودیت جغرافیایی، پروژه لاراول خود را گسترش دهند و از عملکرد مناسب‌ترین برخوردار شوند. سرویس‌ AWS از ساختار قدرتمند و پایداری برخوردار است. توسعه دهندگان وب با استفاده از این سرویس مطمئن خواهند بود که پروژه لاراول در چهارچوب مناسبی اجرا می‌شود.از قابلیت پشتیبان‌گیری برخوردار استوقتی توسعه دهندگان وب به هدف آنلاین کردن پروژه لاراول از راهکار AWS استفاده می‌کنند، خیالشان بابت دسترسی به اطلاعات و دیتاهای راحت خواهد بود. چرا که در صورت بروز هرگونه مشکل، خطا یا حادثه، شرایط بازگشت به مرحله قبل فراهم است. با استفاده از ابزار AWS کاربر می‌تواند به نسخه پشتیبان دسترسی داشته باشد. این قابلیت در اجرای پیاده‌سازی پروژه لاراول در محیط آنلاین می‌تواند بسیار کاربردی باشد.از امنیت بالایی برخوردار استابزار AWS به هدف حفاظت از اطلاعات شخصی کاربران، به تجهیزات و فناوری‌های پیشرو مجهز است. توسعه دهندگان وب می‌توانند با استفاده از سرویس IAM  (Identity and Access Management ) به طور کامل بر روی اطلاعات پروژه کنترل و مدیریت مطلوب را تجربه کنند.رابطه انلاین کردن پروژه Laravel با فناوری DevOpsرابطه بین آنلاین کردن پروژه لاراول و فناوری دواپس، به شرایط بررسی، توسعه، تست و راه‌اندازی در این پروژه مربوط خواهد بود. وقتی قرار است نسبت به اجرای پروژه پیاده‌سازی لاراول در محیط آنلاین از فناوری DevOpsاستفاده شود، با بهبودی در عملکرد و اجرای فرایندهای اتومات و مستمر مواجه خواهید شد. با استفاده از فناوری DevOps توسعه دهندگان وب قادر خواهند بود، از یک زنجیره تامین نرم‌افزار CI/CD pipeline به هدف اجرای پروژه برخوردار شوند. در این زنجیره به صورت خودکار کدهای لاراول تست می‌شوند. در ادامه وقتی اجرای تست تمام شود، محصول نهایی به صورت خودکار قابل دسترسی است.با استفاده از فناوری دواپس فعالیت‌های Develop و راه‌اندازی نسخه جدید در پروژه لاراول نیز، با استفاده از سرویس دهنده‌های شبکه مانند Kubernetes به صورت خودکار انجام می‌شود. شرکت آزادخانی می‌تواند شرایط دسترسی به فناوری DevOps را برای توسعه دهندگان وب به هدف آنلاین کردن پروژه لاراول فراهم آورد.و در نتیجهدر مقاله آنلاین کردن پروژه لاراول، فواید انجام پروژه‌های لاراول در محیط آنلاین و انواع روش‌ها را بررسی کردیم. در ادامه بهترین روش به هدف اجرای این راه‌کار نیز معرفی و شرح داده شد. در این مقاله به نتایج مختلفی رسیدیم. متوجه شدیم که آنلاین کردن پروژه Laravel شرایط افزایش همکاری و هماهنگی بین توسعه دهندگان مختلف را فراهم خواهد آورد. چرا که توسعه دهندگان می‌توانند، به صورت همزمان روی پروژه فعالیت داشته و تغییرات خود را با یکدیگر به اشتراک بگذارند. اجرای آنلاین کردن پروژه لاراول با استفاده از روش AWS باعث ساده شدن فرآیندهای تست و استقرار می‌شود. از طرف دیگر با استفاده از سامانه‌های CI/CD، به صورت خودکار تغییرات جدید به محصول نهایی منتقل خواهد شد. در نهایت می‌توان به این نکته اشاره داشت که بهترین راه‌کار اساسی و اصولی، استفاده از سرور مبتنی بر ابر AWS  است.</description>
                <category>آموزشگاه لاراول فارسی</category>
                <author>محمدعلی آزادخانی</author>
                <pubDate>Sun, 24 Mar 2024 22:31:59 +0330</pubDate>
            </item>
                    <item>
                <title>به اشتراک گذاری سریع تر تجربیات شما. مدیریت دانش</title>
                <link>https://virgool.io/avasam-laravel-edu/%D8%A8%D9%87-%D8%A7%D8%B4%D8%AA%D8%B1%D8%A7%DA%A9-%DA%AF%D8%B0%D8%A7%D8%B1%DB%8C-%D8%B3%D8%B1%DB%8C%D8%B9-%D8%AA%D8%B1-%D8%AA%D8%AC%D8%B1%D8%A8%DB%8C%D8%A7%D8%AA-%D8%B4%D9%85%D8%A7-%D9%85%D8%AF%DB%8C%D8%B1%DB%8C%D8%AA-%D8%AF%D8%A7%D9%86%D8%B4-fvvoxr5krt1z</link>
                <description>وبلاگ های زیادی در ویرگول هست که مثلا درباره لاراول مینویسن.بعضی اومدن این ها رو در یک انتشارات دور هم جمع کردن و چه کار خوبی استاما به مطالب که نگاه میکنی بیشتر برای مبتدی ها نوشته میشه و خیلی مفصل هم نوشته میشهخیلی خوبهاما فقط برای جونیور ها که بیان از سینیور ها چیزی یاد بگیرن. یا جونیور ها برای خودشون مطالب به اشتراک بگذارن.مطالب خیلی خفن گفته نمیشهباید این ایرادات رو رفع کنیم.جامعه هدف رو بیشتر مطالعه کنیم.من اومدم مطالعه کردم. دیدم برای نوشتن مطالب بالا باید خیلی وقت بزاریم. و این مطلوب نیستسینیور ها میتونن با یک خط خلاصه خیلی مطالب رو به همدیگه منتقل کنن.مثلا با یک جستجوی گوگلبه نظرم بیشتر بنویسیم بهتره. چون من و شما برای هم یک خط بنویسیم خیلی مطالب منتقل میشه. این جور مقاله نوشتن به صورت مفصل وقت میگیره و تعداد نرخ انتقال تجربه ی ماها رو کم میکنه. میگم خوبه یک ابزاری برای انتقال تجربه تلگرافی بسازیم.ابزاری برای انتقال تجربه سریع. البته من ساختم چندتا.یکیش اکستنشن گوگل کروم هست که میاد روی گوگل و هر چی گوگل میکنیم یک دکمه میاد زیرش که اگر صلاح دونستین دکمه رو میزنید میره توی پیام رسان ها. البته قبلش باید روبات تلگرام و بله و ایتا و گپ کانفیگ بشن و متصل بشن به این ابزار.تا گوگل میکنی یک دکمه میاد میزنی منتشر میشهاینم نتیجه ی کار اون دکمه:یک ابزار دیگه پشتش نوشتم توییت میکنه.هدف من این بوده که من و شما میتونیم همه حرفامون رو با یک جستجوی گوگل با هم به اشتراک بگذاریم. این خلاصه ترین و سریع ترین روشی بوده که کشف کردمقدم بعدی که میخوام انجام بدم وقت نمیکنم اینه که کنار اون دکمه یک کمبو باکس بیاد و بگه توی کدوم چنل. چون الان من چند تا چنل دارم. مثلا ورزشی و لاراول و روزنوشت های غیر اون. معمولا توی یکی از این سه تا مطلب به اشتراک میزارم.کاربرای دیگه تولزی که من نوشتم ممکنه بخوان کمتر یا بیشتر کانال بسازن.نمیدونم این ابزار چقدر مشتری داره که سرعت توسعه اش رو بیشتر کنم</description>
                <category>آموزشگاه لاراول فارسی</category>
                <author>صابر طباطبائی یزدی</author>
                <pubDate>Fri, 22 Mar 2024 12:29:52 +0330</pubDate>
            </item>
                    <item>
                <title>لاراول ۱۱ - خلاصه کنفرانس ۲۰۲۴ (قسمت اول)</title>
                <link>https://virgool.io/avasam-laravel-edu/%D9%84%D8%A7%D8%B1%D8%A7%D9%88%D9%84-%DB%B1%DB%B1-%D8%AE%D9%84%D8%A7%D8%B5%D9%87-%DA%A9%D9%86%D9%81%D8%B1%D8%A7%D9%86%D8%B3-%DB%B2%DB%B0%DB%B2%DB%B4-%D9%82%D8%B3%D9%85%D8%AA-%D8%A7%D9%88%D9%84-ljjn2rkw0qmk</link>
                <description>این کنفرانس از یوتیوب آوردم آپارات که راحت با مصرف نیم بها بتونید ببینیدhttps://www.aparat.com/v/oj105۱- لاراول ولت (لایووایر)اولین چیزی که توسط تیلور گفته میشه لاراول وولت هست.https://livewire.laravel.com/docs/voltلایووایر یک نگاه جدید به اجزای صفحه وب داره. هر بخشی هر باکسی از صفحه میتونه با سرور ارتباط شبیه اجکس داشته باشه اما به صورت اچ تی ام ال.چیزی که من میفهمم ازش اینه که هر تیکه از صفحه که اراده کنید یک کامپوننت میشه. یک یو آر ال شبیه وب سرویس خواهد داشت و با هر درخواست که شما طراحی پیاده سازی میکنید یک درخواست میره سرور و یک اچ تی ام ال توی صفحه جایگزین میشه۲- لاراول Herdدومین چیزی که من میخوام بگم آخرین مطلبی بود که تیلور در این کنفرانس بود که برای من جالب بود. و اون  لاراول herd هستگفت که این ابزار شبیه زمپ نصب میشه و شما رو از هر چیز دیگه بخواهید نصب کنید بی نیاز می کنه.گفت روی مک نصب میشده و خیلی کمک میکردهو الان روی ویندوز قراره آخر ماه مارس ارایه بشه</description>
                <category>آموزشگاه لاراول فارسی</category>
                <author>صابر طباطبائی یزدی</author>
                <pubDate>Sun, 17 Mar 2024 16:24:51 +0330</pubDate>
            </item>
                    <item>
                <title>یک نگاه به چیزی  که توی لاراول 11 اومده</title>
                <link>https://virgool.io/avasam-laravel-edu/laravel11-wnezdy73v81z</link>
                <description>لاراول 11‏ پوشه بندی ساده شدهتعداد فایل هایی که نصب میشن 69 تا کمتر شدناینا چیزایه که توی بتا بود ممکنه عوض بشن ولی در حال حاضر این چیزیه که انتظار داریم باشه :  کنترلر ها به صورت پیشفرض از چیزی extend نمیشنفایل های config حذف شدندیگه پوشه middleware نداریمدر حال حاضر لاراول 9 تا middleware داره و بیشترشونم کاستومایز نمیکنید ولی اگه احیانا خواستید کاستومایز کنید به پوشه App/ServiceProvider منتقل شده . برای مثال :public function boot(): void{
        EncryptCookies::except([&#039;some_cookie&#039;]);
}دیگه Http/Kernel وجود ندارهبیشتر کارهایی که توی kernel میکردید رو الان میتونید توی Bootstrap/App انجام بدیدreturn Application::configure()
        -&gt;withProviders()
    - ›withRouting(
        web: __DIR__ . &#039;/../routes/web.php&#039;
        commands: __DIR__ . &#039;/../routes/console.php&#039;,
    )
    -&gt;withMiddleware(function (Middleware Smiddleware) {
    $middleware-&gt;web(append: LaraconMiddleware::class):
    })‏ Model cast ها تغییر کردندالان دیگه Model cast ها به عنوان یک متد تعریف میشن نه یک پراپرتی وقتی که به عنوان متد تعریف میشن ما میتونیم کار های دیگه ای هم بکنیم مثلا متد های دیگه رو مستقیما فراخوانی کنیم . اینجا یه مثال از لاراول 11 آوردیم : protected function casts(): array
{
    return [
        &#039;email_verified_at&#039; =&gt; &#039;datetime&#039;,
        &#039;password&#039; =&gt; &#039;hashed&#039;,
        &#039;options&#039;=› AsEnumCollection::of(UserOption::class),
    ];
}تغییرات configلاراول کلی فایل کانفیگ داره و لاراول 11 همشونو پاک کرده  و از اون طرف env. بزرگتر شده و همه config هایی که نیازه ست کنید رو داره برا همین  کامند جدید config:publish هم اومده پس شما میتونید هر کانفیگی که بخواید رو برگردونید . با این حال بازم هر آپشنی که نمیخواید کاستومایز کنید  رو میتونید حذف کنیدمتد جدید onceتوی لاراول 11  helper جدید once اومده که براتون تضمین میکنه همیشه یک مقدار مشابه رو ازش بگیرید بی توجه به این که چندبار فراخوانی شده . فانکشن once وقتی کاربرد داره که بخوای مطمئن شی یه کدی فقط یکبار اجرا بشه.مایگریشن های دیفالت کوچکتر شدهقبلا توی لاراول یه سری مایگریشن دیفالت با تاریخ های 2014 و 2019 بود که الان دیگه تاریخ هاشون حذف شده و دوتا فایل شدن‏Route ها تغییر کرده اندتوی لاراول 11 به صورت پیشفرض فقط console.php و web.php داریم و اگه بخواید روت های api رو هم داشته باشید باید کامند php artisan install:api رو بزنید و برای وب سوکت هم همینطور کامند php artisan install:broudcasting رو بزنید ‏ Health Route جدید upتو لاراول 11 health route جدید  up اومده که از DiagnosingHealthEvent استفاده میکنه پس میتونید به کمکش بهتر برنامتون رو  مانیتور (نظارت) کنیدتغییر در APP_KEYتو نسخه های قدیمی تر لاراول اگه APP_KEY رو تغییر میدادی دیتای توی دیتابیس ممکن بود خراب بشه اما توی لاراول 11 با استفاده از   APP_PREVIOUS_KEYS   در env. دیگه برای دیتای رمزنگاری شده‌ی قدیمی مشکلی پیش نمیاد. این میاد و دیتای های قدیمی رو با کلید جدید دوباره رمزنگاری میکنهکرنل Console حذف شدهتوی لاراول 11 کرنل Console حذف شده و شما میتونید کامند هاتون رو توی routes/console.php تعریف کنیدلاراول 11 قراره 12 مارس یعنی دو روز دیگه بیاد ولی اگه بخوایید میتونید با این کامند الان نصبش کنید laravel new cleverdevs --devو پیش نیاز های لاراول 11 رو هم میتونید توی این تصویر ببینید پیشنیاز های لاراول 11منبع : https://laravel-news.com/laravel-11 پیشنهاد میکنم حتما به لینک بالا سر بزنید و توضیحات و مثال های بیشتر رو ببینیددر آخر اگه پست رو دوست داشتید لایک کنید و اگه مشکلی داره کامنت بزارید❤️</description>
                <category>آموزشگاه لاراول فارسی</category>
                <author>محمد رستمی</author>
                <pubDate>Sun, 10 Mar 2024 19:12:04 +0330</pubDate>
            </item>
                    <item>
                <title>معرفی PaL (بررسی تنظیمات php و لاراول)</title>
                <link>https://virgool.io/avasam-laravel-edu/%D9%85%D8%B9%D8%B1%D9%81%DB%8C-pal-%D8%A8%D8%B1%D8%B1%D8%B3%DB%8C-%D8%AA%D9%86%D8%B8%DB%8C%D9%85%D8%A7%D8%AA-php-%D9%88-%D9%84%D8%A7%D8%B1%D8%A7%D9%88%D9%84-x7cdwaymkako</link>
                <description>حتما شده که برای نصب لاراول(Laravel) به کلی خطا مثل سازگار نبودن نسخه php یا نبود اکستنشن (مثل curl , ...) برخورد کردید.حالا این مورد روی سرور یا کامپیوتر شخصی دارای اهمیت بیشتری هست چرا که شما باید همه چیز را نصب کنید. https://github.com/saeedvir/PaL-Server-Info دقیقا PaL چه کار می کند؟به کمک PaL شما می توانید در یک رابط کاربری زیبا  تنظیمات PHP را بررسی کنید و پیش نیاز های نصب لاراول از نسخه 5.8 تا 11 را مشاهده و بررسی کنید.از جمله قابلیت های PaL:بررسی پیشنیاز نسخه های مختلف لاراولبررسی تنظیمات php.iniمشاهده ماژول ها و اکستنشن های نصب شده PHPعیب یابی تنظیمات php.ini و ارائه راه حلویرایش تنظیمات php.iniتست بنچمارک وب سرور و دیتابیس MySQLبررسی تنظیمات امنیتی phpبررسی وب سرور از نظر HTTP Headersبررسی نسخه های جدید php - web server - composer , ...امکان به روزرسانی راحت نرم افزارنسخه CLI (نسخه قابل استفاده در command line)چه طور استفاده کنیم؟کافی هست فایل Pal-Server-Info.php را به لوکال هاست یا هاست یا سرور انتقال دهید و اجرا کنید.http://Your-web-address.com/Pal-Server-Info.php
http://127.0.0.1/Pal-Server-Info.php
http://localhost/Pal-Server-Info.phpهمچنین می تونید دستور زیر را در مسیری که فایل Pal-Server-Info.php قرار دارد ، اجرا کنید :php -S localhost:8000

http://localhost:8000/Pal-Server-Info.phpبرای دسترسی به دیتابیس mysql نیاز هست تا نام کاربری و رمز عبور را در اسکریپت وارد کنید.یا می توانید این تنظیمات را ویرایش کنید:$MYSQL_CONFIG = [
     &#039;host&#039; =&gt; &#039;localhost&#039;,
     &#039;username&#039; =&gt; &#039;USER_NAME_HERE&#039;, //ex : root
     &#039;password&#039; =&gt; &#039;PASSWORD_HERE&#039;, //ex : password
     &#039;db&#039; =&gt; &#039;DB_NAME_HERE&#039;,         //ex : laravel_db
     &#039;benchmark_insert&#039; =&gt; 100,      //ex : 100
   ];نسخه CLIبرای استفاده از نسخه CLI کافی است در مسیر فایل PaL-cli.php دستور زیر را اجرا کنید:php PaL-cli.php helpبرای حمایت از پروژه PaL چه کار می توانیم انجام دهیم؟    برای حمایت مالی (دونیت) می توانید از طریق این صفحه اقدام کنید.همچنین شرکت در بهبود و انتشار این اسکریپت هم خیلی به PaL کمک می کند.معرفی بخش های مختلف برنامهتست PHP-Benchmarkبرنامه در فاکتورهای مختلف از php شما تست می گیرد و زمان مورد استفاده در هر مورد را نشان می دهد.تست MySQL-Benchmarkبرنامه در فاکتورهای insert/select/update/delete  از mysql شما یک تست ساده می گیرد و زمان مورد استفاده در هر مورد را نشان می دهد.دقت کنید که تعداد سطر مورد استفاده در تست ، از طریق خط 26 کد برنامه قابل ویرایش است. بررسی و پیشنهاد تنظیمات php.iniتنظیمات بخش های مختلف php.ini از طریق این بخش بررسی می شود و مقدار پیشنهادی برای شما نمایش داده می شود.ویرایش تنظیمات php.iniدقت کنید که بعد از ویرایش تنظیمات php.ini نیاز است که وب سرور شما دوباره راه اندازی شود.در هاست های اشتراکی ، فایل php.ini مورد استفاده را می توان در پوشه public_html قرار داد و فایل اصلی php.ini قابل ویرایش نیست.بررسی HTTP Header های وب سرورچه طور برنامه را به روزرسانی کنیم؟کافی است در بخش پایین صفحه بر روی Check For Update کلیک کنید.در نسخه CLI می توانید از دستور زیر استفاده کنید:php PaL-cli.php upچگونه مشکلات برنامه را گزارش دهیم ؟اگر مشکلی در اجرا داشتید ، حتما در بخش Issues گیت هاب اطلاع دهیداگر پیشنهادی برای برنامه داشتم ، چه طور؟از طریق تلگرام یا گیت هاب می توانید به من اطلاع دهید.از قسمت نظرات سایت ویرگول هم می توانید من را مطلع کنید.لیست تغییراتآخرین نسخه : 1.7اضافه شدن پشتیبانی از لاراول 11اضافه شدن پنجره وارد کردن اطلاعات دیتابیسنسخه 1.6اضافه شدن PHP INI Editor</description>
                <category>آموزشگاه لاراول فارسی</category>
                <author>سعید</author>
                <pubDate>Sat, 09 Mar 2024 04:29:06 +0330</pubDate>
            </item>
                    <item>
                <title>همه چیز در مورد نحوه استفاده از Repository pattern در فریم ورک Laravel</title>
                <link>https://virgool.io/avasam-laravel-edu/%D9%87%D9%85%D9%87-%DA%86%DB%8C%D8%B2-%D8%AF%D8%B1-%D9%85%D9%88%D8%B1%D8%AF-%D9%86%D8%AD%D9%88%D9%87-%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87-%D8%A7%D8%B2-repository-pattern-%D8%AF%D8%B1-%D9%81%D8%B1%DB%8C%D9%85-%D9%88%D8%B1%DA%A9-laravel-jzajqpddybxt</link>
                <description>به نام ایزد یکتاسلام خدمت همه دوستان عزیزاین مقاله در خصوص یکی از انواع الگوهای طراحی در برنامه نویسی یا به عبارت دیگر Design pattern ها هستش که در اینجا به توضیح یکی این الگوها یعنی Repository pattern میپردازیم.امیدوارم که در انتهای این مطلب تونسته باشم قدمی کوچک در جهت پیشرفت و آگاهی شما عزیزان برداشته باشم.قبل از اینکه به سراغ توضیح این الگو بریم یه نیم نگاهی به تعریف Design pattern داشته باشیم اینکه چیه و چه کاربردی داره و ....چی هست این Design Pattern..؟الگوهای طراحی مثل دستورالعمل‌هایی برای توسعه‌دهندگان در برنامه‌نویسی شی‌گرا، و راه‌حل‌هایی برای حل مشکلات متداول در طراحی نرم‌افزار هستند(چقد سخت شد!!). الگوهای طراحی برای اولین بار توسط یک گروه چهار نفره به نام GOF معرفی شدند. این گروه در کتابی به معرفی 23 الگوی طراحی پرداختند و این 23 الگو را در 3 دسته الگوهای ایجادی(Creational)، الگوهای ساختاری(Structural) و الگوهای رفتاری(Behavioral) قرار دادند.نکته :الگوهای طراحی جزو معماری های نرم افزاری نیستند و فقط شیوه ای صحیح از کدنویسی شی گرا را ارائه میدن. بنابراین این الگوها فقط در قلمرو کدنویسی شی گرا وارد میشن و مستقل از زبان های برنامه نویسی هستند.(در هر زبانی که از شی گرایی پشتیبانی میکنه میشه ازشون استفاده کرد)پیشنهاد میکنم حتماااااااااااااااااااااااااا به عنوان یه برنامه نویس حداقل یکبار هم که شده این الگوهارو مطالعه کرده و با ساختار اونها آشنا بشین.خب حالا بریم سر وقت الگوی طراحی خودمون یعنی Repository patternروالی که توضیح خواهیم به این صورت خواهد بود :1-  یه تعریفی از این الگو میکنیم اینکه چیه و تاریخچش و ... 2- چرایی استفاده ازش 3- انواع پیاده سازیش 4- چالش¬های مطرح در این الگو4- نحوه استفاده ازش رو در فریم روک لاراول توضیح میدیم.معنی لغوی Repository pattern، مخزن یا لایه ای جهت ذخیره کردن اطلاعات میشه.  Repositoryیک لایه میان لایه بیزنس (Business logic layer) و لایه دیتا (Data access layer) در پروژه شما ایجاد میکنه و هدفش جلوگیری از دسترسی مستقیم لایه بیزنس به لایه دیتاتون هستش. در واقع این لایه(Repository) مسئولیت کار با لایه دیتا رو به عهده داره و تمامی کدهای مربوط به کوئری ها و ... در این لایه نوشته میشن که در صورت نبودن این لایه تمامی این کارها بایستی در لایه بیزنس پروژتون انجام بشه.(برای درک بیشتر لایه بیزنس رو کلاس های Controller و لایه دیتا رو Model ها در لاراول در نظر بگیرین!)Repository pattern structureطبق اولین اصل از اصول SOLID، یعنی Single responsibility هر کلاس مسئول انجام یک وظیفه هستش که با این وجود در لایه ای مثل Controller در ساختار MVC نبایستی منطق مربوط به لایه دیتا پیاده سازی بشه. بنابراین در الگوی Repository pattern این لایه(Controller) برای اجرای دستورات و یا فراخوانی داده ها از طریق Repository  مورد نظرش درخواست های خودش رو مطرح میکنه.چرایی استفاده از Repository Patternبه صورت کلی اگر بخوایم مزایای استفاده از این الگو رو بگیم به این صورت میشه :1- از تکرار شدن کوئری ها (مخصوصا کوئری های پیچیده) در سراسر برنامه جلوگیری میکنه و اونهارو در یک جا متمرکز می کنه2- در آینده اگر به هر دلیلی بخواید معماری دسترسی به داده های دیتابیستون(ORM) رو تغییر بدین ،به راحتی میتونین با انجام یکسری تغییرات این کار رو انجام بدین3- در پروژه های بزرگ ممکنه شما از انواع مختلفی از دیتابیس ها در پروژتون استفاده کنید با استفاده از پیاده سازی این الگو میتونید بدون هیچ استرس و تغییرات زیادی این کار رو انجام بدین.4- با توجه به رعایت شدن اصل Single Responsibility ، به راحتی میتونیم برای کلاس هامون Unit Test بنویسیم.انواع پیاده سازیشبرای پیاده سازی این الگو در چارچوب لاراول تفکرات زیادی وجود داره.روش اولیکی از این تفکرات ساخت یک کلاس جامع برای تمامی مدل هامون در پروژه هستش که این کلاس بایستی از یک قانون(contract/interface) به صورت کلی پیروی کنه. عملکردهایی که در ارتباط با دیتابیس(منظور کوئری هایی که داریمه) وجود دارند در این کلاس نوشته میشه. در نهایت با استفاده از Service Container لاراول این دو کلاس عزیزمون رو بهم در هسته لاراول(provider) bind  میکنیم و در آخر هم قانون ساخته شده رو در کنترلر مد نظرمون Inject میکنیم که با اینکار به راحتی میتونیم از قابلیت های کلاس Repository مون استفاده کنیم.مزایا : در این سناریو تمامی متدهای مورد نیازمون در یک کلاس جمع آوری  میشه که با این کار یه جورایی از پراکندگی کدها جلوگیری میشه!(همه نیازمندی¬ها داخل یک کلاس هستند)بر اساس نظر خودم و برخی از اساتید این روش رو معمولا در پروژه هایی به کار میگیرن که عملیات خوندن روی دیتاهاشون زیاد ندارن و بیشتر علاقه به نوشتن دارن.معایب : یکی از بزرگترین معایبی که این سناریو داره محدود کردن مدل¬ها به استفاده از متدهای تعریف شده در کلاس ایجاد شده هستش. همچنین باعث میشه کلاس ساخته شده به شدت بزرگ و شلوغ بشه! چون ممکنه هر مدل سناریو و ساز و کارهای(کوئری) مربوط به خودش رو برای ارتباط با دیتابیس داشته باشه پس در نتیجه منطقی به نظر نمیرسه که برای کلیه مدل هامون از یک کلاس استفاده کنیم. باز بر اساس نظر خودم و برخی دیگر از اساتید، استفاده از این روش رو معمولا در پروژه های با اندازه بزرگ که عملیات خواندن دیتاهاشون زیاده هستش پیشنهاد میدم.روش دومبه ازای هر مدل یک Repository  و حداقل یک قانون(contract/interface) داریم که این کلاس بایستی از یک کلاس انتزاعی(abstract) ارث بری(extend) کند و همچنین این کلاس انتزاعی هم بایستی به صورت جداگانه برای خودش یک قانون رو پیاده سازی کنه.حال به توضیح هر کدام از کارهای گفته شده می¬پردازیم.با کلاس انتزاعی شروع کنیم...(چرا و به چه دلیل؟)این کلاس در واقع یک بیسی برای تمامی کلاس های Repository مون هستش که داخلش عملیات CRUD و همچنین برخی از کوئری های پر تکرار به صورت جامع پیاده سازی میشه.این کلاس همچنین وظیفه ساخت آبجکت از مدل هامون رو هم به عهده داره که در واقع با این کارش هست که میتونه کوئری های مختلف رو داخل خودش هندل کنه.قانونی که این کلاس پیاده سازی میکنه در واقع بدنه متدهای CRUD جهت ارتباط Repository ها با دیتابیس ها هستش.(هر دیتابیسی عملیات CRUD رو برای جداولش داره).گفتیم هر Repository  حداقل یک قانون رو بایستی پیاده سازی کنه که در این قانون عملیات های مختص هر Repository نوشته میشه و بسته به مدلش و دید برنامه نویس میتونه هر چیزی باشه!همچنین این قانون در آخر بایستی در هسته لاراول به کلاس Repository مون bind بشه تا در کانستراکتور Controller مربوطش بتونیم از کلاسش استفاده کنیم.چالش های مطرح در استفاده از این الگو از مباحثی که حین استفاده از این الگو وجود داره موضوع ذخیره دیتاها در دیتابیس های رابطه ای هستش. یکسری از اساتید موافق پیاده سازی متدهای مربوط به ذخیره داده های رابطه ای درون خود کلاس های Repository هستن و برخی این امر رو بیهوده و اشتباه میدونن! حالا چرا؟؟چون زمانیکه بخوایم این متدها رو ایجاد کنیم بایستی از همان روابط پیاده شده در مدل هامون برای ذخیره اطلاعات استفاده کنیم(دوباره کاری میشه، تکرار کد و ...) اگر کسی برای اولین بار بخواد اینکار رو انجام بده احتمالا با یک دیوار فکری مواجه میشه که : هدف از این الگو کاهش کدهای تکراری هستش، پس چرا ما باید این تکرار رو جهت ذخیره داده هامون داشته باشیم؟؟اما موضوع جالبتر اینجاست که ما نخوایم عملیات ذخیره این داده هارو درون کلاسRepository مون انجام بدیم!! خب پس کجا باید بنویسیمشون؟؟! داخل کنترلر!! واقعا؟؟ اینجوری که نمیشه!! ساختار الگو زیر سوال میره!!من هم خودم این موضوع رو مثل شما قبول دارم اما برخی از اساتید استفاده از این الگو رو بیشتر جهت فراخوانی یا Read کردن اطلاعات پیشنهاد میدن تا ذخیره یا Write کردنشون! البته که منظور از ذخیره کردن اینجا بیشتر برای داده هایی که نیاز به استفاده از relation ها برای ذخیره دارند به کار میره.با این تفسیر شما بایستی پروژتون رو از لحاظ  حجم read or write کردن تحلیل کنین و با استفاده از نتیجه به دست اومده تصمیم بگیرین که آیا از این الگو استفاده کنین یا خیر!خب تا اینجا سعی کردیم مباحث تئوری مربوط به این الگو رو براتون توضیح بدم، از اینجا به بعد بایستی دست به کد بشین و کارایی که من انجام میدم رو شما هم مرحله به مرحله انجام بدین.اولین کاری که باید انجام بدیم تنظیم کردن ساختار دایرکتوری هامون برای ساخت کلاس های مربوط به این الگو هستش.- app
--- Http
--- Repositories
------ ModelName
--------- ModelRepository.php
--------- Contracts
------------ Interface1.php
------------ Interface2.php
------ RepositoryServiceProvider.php
------ BaseRepositoryInterface.php
------ BaseRepository.phpبحث ساختار دایرکتوریها سلقیه ای هستش اما این ساختاری که اینجا میبینید یه جورایی best practice هستش!کلیت این ساختار هم به این صورت هستش که به ازای هر مدل یک دایرکتوری وجود داره که داخلش یک کلاس Repository  با عنوان ModelRepository هست و همچنین یک دایرکتوری با عنوان Contracts باید داشته باشیم که داخلش قانون های مختص اون ModelRepository وجود داره.3 تا کلاس هم با عناوین BaseRepository  &amp; BaseInterfaceRepository &amp; RepositoryServiceProvier داریم که توضیحات دوتا از این کلاس هارو بالاتر گفتم و فقط توضیح یکیش مونده که اون رو هم در ادامه توضیح خواهم داد.اول از کلاس BaseInterfaceRepository شروع میکنیم  که گفته بودیم داخلش یکسری متدهای ثابت(CRUD) رو مینویسیم.interface BaseRepositoryInterface
{
public function read($id);
public function readAll();
public function add(array $data);
public function update($id);
public function remove($id);
public function removeRange(array $id)
}خب همونجور که میبینید متدهایی رو داخل این کلاس نوشتیم که برای کار با هر دیتابیسی پاسخگوی نیازهامون هستش.کلاس BaseRepository علاوه بر متدهایی که بایستی(مجبورا) پیاده سازی کنه، میتونه هر متد جامع دیگه ای که برای کار با مدل ها نیاز هستش رو داشته باشه.(مثلا متد findBy یا هر متد دیگه ای که فکر میکنید نیاز هستش) .همچنین میتونین متدهای دیگه ای رو مثل paginate یا ... برای زمانیکه که میخواین روی دیتاهاتون فیلتری اعمال کنین در نظر بگیرین.(تمامی عملکردهایی که تا دیروز داخل کنترلرهامون انجام میدادیم میتونیم تحت عنوان یک متد داخل Repository هامون داشته باشیم و هر کدوم رو بسته به نیازمون ازش استفاده کنیم.)abstract class BaseRepository implements BaseRepositoryInterface
{
private $model;
protected function setModel(Model $model)
{
      $this-&gt;model = $model;
      return $this;
}
public function getModel()
{
      return $this-&gt;model;
}
public function read($id){}
public function readAll()
{
      $this-&gt;model-&gt;sortBy(‘created_at’)-&gt;all();
}
public function add(array $data) {}
public function remove($id){}
public function removeRange(array $id) {}
public function update($id){}
}حال به سراغ پیاده سازی یکی از کلاس های Repository مون میریم. من در اینجا مدل فرضی Challenge رو در نظر گرفتم.class ChallengeRepository extends BaseRepository implements ChallengeRepositoryContract
{
public function __construct(Challenge $challenge)
{
    $this-&gt;setModel($challenge);
}
public function getChallengesWithProducts(Request $request){}
public function add(array $data)
{
   parent::add($data);
}
}شما در این کلاس میتونین از متدهای پیاده شده در کلاس والد(BaseRepository) استفاده کنید یا اگر ساز و کار دیگه ای رو از تابع پیاده شده مد نظر دارین میتونین اون متد رو override کنید و بجاش ساز و کار خودتون رو پیاده سازی کنین.در کلاس یک متد نام getChallengesWithProducts  وجود داره که این متد ساخته شده در ChallengeRepositoryContract هستش که بسته به نیاز مدلمون براش در نظر گرفتیم.بعد از ساخت این کلاس و همچنین قانونش کافیه که این دوتارو در هسته لاراول بهم Bind کنیم.کلاس RepositoryServiceProvider در واقع برای انجام همچنین کاری ساخته شده.class RepositoryServiceProvider extends ServiceProvider
{
public function register(){}
public function boot()
{
   $this-&gt;app-&gt;bind(
        ChallengeRepositoryContract::class,
        ChallengeRepository::class);
}
}به ورودی های متد bind دقت کنین، چرا که در صورت جابجا نوشتن کلاس ها با خطای لاراول مواجه میشین.(کلاس اول در واقع abstract class شما هستش و کلاس دوم کلاسی هست که از این abstract class ارث بری کرده!)برای اینکه این موضوع کامل تر براتون جا بیوفته در خصوص Service Container لاراول قشنگ تحقیق کنین. نکته ای که باید بهش توجه بکنین این هستش که بعد از ساخت این ServiceProvider بایستی به لیست سرویس های لاورال اضافش کنین تا حین بوت شدن پروژتون بتونین از این سرویس هم استفاده کنین...(داخل فایل app.php)خب دیگه همه چی اماده هستش برای اینکه ما بتونیم از Repository مون داخل کنترلر استفاده کنیم. فقط کافیست داخل متد کانستراکتور کنترلمون، ChallengeRepositoryContract رو اینجکت کنیم تا به راحتی بتونیم به متدهای مورد نیازمون دسترسی داشته باشیم.ممنون از توجهتون.راستی تا یادم نرفته اینرو هم بگم که برای استفاده از این سناریو من پکیجی رو اماده کردم که پیاده سازی رو براتون راحتتر میکنه و میتونید داخل پروژه هاتون ازش استفاده کنید. https://github.com/matin-kh73/RepositoryPattern موفق باشید.</description>
                <category>آموزشگاه لاراول فارسی</category>
                <author>matin khaje khalili</author>
                <pubDate>Tue, 05 Mar 2024 13:39:08 +0330</pubDate>
            </item>
                    <item>
                <title>کانتینر لاراول با مثال واقعی</title>
                <link>https://virgool.io/avasam-laravel-edu/%DA%A9%D8%A7%D9%86%D8%AA%DB%8C%D9%86%D8%B1-%D9%84%D8%A7%D8%B1%D8%A7%D9%88%D9%84-%D8%A8%D8%A7-%D9%85%D8%AB%D8%A7%D9%84-%D9%88%D8%A7%D9%82%D8%B9%DB%8C-ondz5vqyzg40</link>
                <description>عبارت Container یکی از اصطلاحات پرکاربرد در فریم ورک لاراول است. اما همیشه برای همه روشن نیست که چیست و چگونه کار می کند. در این پست سعی می کنم مفهوم ظرف را با یک مثال واقعی توضیح دهم.کافی شاپتصور کنید در یک کافی شاپ هستید، جایی که می توانید انواع نوشیدنی های قهوه را سفارش دهید. کافی شاپ به عنوان کانتینر سرویس عمل می کند . وقتی یک قهوه سفارش می دهید، مثلاً یک کاپوچینو، نیازی نیست خودتان بدانید چگونه آن را درست کنید. شما فقط به باریستا می گویید که چه می خواهید، و آنها آن را با استفاده از منابع کافی شاپ (دانه های قهوه، شیر، دستگاه های اسپرسوساز و غیره) برای شما آماده می کنند.در این مثال:کافی شاپ (Service Container): اینجاست که تمام منابع (خدمات) در دسترس است. این می داند که چگونه هر نوشیدنی (سرویس) قهوه ای را که شما سفارش دهید آماده کند.باریستا (Service Resolver): به عنوان مکانیزمی در کافی شاپ عمل می کند که سفارش شما را درک می کند و می داند که چگونه آن را با استفاده از منابع موجود در فروشگاه انجام دهد.نوشیدنی های قهوه (services): اینها خدمات مختلفی هستند که کافی شاپ ارائه می دهد، مانند کاپوچینو، لاته یا اسپرسو. تهیه هر نوشیدنی به فرآیند و منابع خاصی نیاز دارد.بکارگیری مثال در توسعه نرم افزارترجمه این به توسعه نرم افزار:مفهوم Service Container:  یک ابزار قدرتمند در یک چارچوب (مانند لاراول) است که ایجاد و توزیع سرویس ها (اشیاء) را مدیریت می کند. می داند چگونه اشیاء را بر اساس درخواست های شما نمونه سازی و پیکربندی کند.مفهوم Services: اینها کلاس ها و اشیایی هستند که وظایف خاصی را در برنامه شما انجام می دهند، مانند ارسال ایمیل، ثبت پیام ها، یا مدیریت تعاملات پایگاه داده.مفهوم Resolving Services: هنگامی که شما یک سرویس خاص  درخواست می کنید، مانند سفارش یک قهوه ، نیازی به دانستن نحوه ساخت یا پیکربندی سرویس ندارید. این ابزار آن را برای شما مدیریت می کند و خدمات آماده استفاده را ارائه می دهد.چرا از کانتینر سرویس استفاده کنیم؟ساده سازی: همانطور که نیازی به دانستن طرز تهیه هر نوع نوشیدنی قهوه ندارید، نیازی به مدیریت دستی ایجاد و پیکربندی اشیا در برنامه خود ندارید.انعطاف‌پذیری: می‌توانید به راحتی نحوه ساخت یک سرویس را بدون تغییر کدی که از آن استفاده می‌کند، تغییر دهید، مشابه اینکه چگونه کافی‌شاپ می‌تواند دستور غذا یا مواد تشکیل دهنده آن را تغییر دهد بدون اینکه بر نحوه سفارش نوشیدنی تأثیر بگذارد.کارایی: کانتینر می‌تواند منابع مشترک را مدیریت کند، مانند یک اتصال پایگاه داده واحد که بسیاری از بخش‌های برنامه شما از آن استفاده می‌کنند، مشابه اینکه یک کافی‌شاپ از یک دستگاه اسپرسوساز برای تهیه نوشیدنی‌های مختلف استفاده می‌کند.تئوری بس است حالا بیایید یک کد بنویسیم.نوشتن Container در پروژه PHPتعریف انواع قهوه (Services)ابتدا اجازه دهید چند کلاس را تعریف کنیم که نشان دهنده انواع مختلف نوشیدنی های قهوه هستند. این کلاس ها روشی برای توضیح نحوه سرو نوشیدنی خواهند داشت.interface Coffee {
    public function serve();
}

class Espresso implements Coffee {
    public function serve() {
        return &amp;quotServing an Espresso.\n&amp;quot
    }
}

class Cappuccino implements Coffee {
    public function serve() {
        return &amp;quotServing a Cappuccino with frothy milk.\n&amp;quot
    }
}

class Latte implements Coffee {
    public function serve() {
        return &amp;quotServing a Latte with steamed milk.\n&amp;quot
    }
}اجرای کافی شاپ (کانتینر خدمات)اکنون CoffeeShopکلاسی را ایجاد می کنیم که به عنوان ظرف سرویس ما عمل می کند. قابلیت ثبت انواع قهوه و سرو آنها را خواهد داشت.class CoffeeShop {
    protected $recipes = [];
    
    // Register a coffee type
    public function register($coffeeName, Callable $make) {
        $this-&gt;recipes[$coffeeName] = $make;
    }

    // Serve a coffee based on the registered recipe
    public function serve($coffeeName) {
        if (!isset($this-&gt;recipes[$coffeeName])) {
            return &amp;quotSorry, we don&#039;t serve $coffeeName.\n&amp;quot
        }
        
        $coffee = call_user_func($this-&gt;recipes[$coffeeName]);
        return $coffee-&gt;serve();
    }
}انواع قهوه را ثبت کنید و آنها را سرو کنیددر نهایت، ما هر نوع قهوه را در کافی شاپ ثبت می کنیم و سپس از آن می خواهیم که نوشیدنی های مختلف را سرو کند.// Create the coffee shop (service container)
$coffeeShop = new CoffeeShop();

// Register coffee types (services)
$coffeeShop-&gt;register(&#039;espresso&#039;, function() { return new Espresso(); });
$coffeeShop-&gt;register(&#039;cappuccino&#039;, function() { return new Cappuccino(); });
$coffeeShop-&gt;register(&#039;latte&#039;, function() { return new Latte(); });

// Serve the coffee
echo $coffeeShop-&gt;serve(&#039;espresso&#039;);
echo $coffeeShop-&gt;serve(&#039;cappuccino&#039;);
echo $coffeeShop-&gt;serve(&#039;latte&#039;);
echo $coffeeShop-&gt;serve(&#039;mocha&#039;); // This should return an errorخروجیServing an Espresso.
Serving a Cappuccino with frothy milk.
Serving a Latte with steamed milk.
Sorry, we don&#039;t serve mocha.در اصل، یک ظرف سرویس در توسعه نرم‌افزار پیچیدگی‌های ایجاد و مدیریت اشیاء سرویس را انتزاعی می‌کند و به توسعه‌دهندگان اجازه می‌دهد تا بر عملکرد سطح بالاتر برنامه خود تمرکز کنند. همانطور که یک کافی شاپ به طور موثر انواع نوشیدنی ها را بدون نیاز به دانستن جزئیات نحوه ساخت هر کدام در اختیار شما قرار می دهد، یک کانتینر سرویس مدیریت اشیاء سرویس و وابستگی های آنها را در برنامه شما ساده می کند.منبع: laravel school</description>
                <category>آموزشگاه لاراول فارسی</category>
                <author>babak moeini</author>
                <pubDate>Mon, 04 Mar 2024 13:50:31 +0330</pubDate>
            </item>
                    <item>
                <title>فیلامنت، اضافه کردن صفحه ویرایش پروفایل</title>
                <link>https://virgool.io/avasam-laravel-edu/%D9%81%DB%8C%D9%84%D8%A7%D9%85%D9%86%D8%AA-%D8%A7%D8%B6%D8%A7%D9%81%D9%87-%DA%A9%D8%B1%D8%AF%D9%86-%D8%B5%D9%81%D8%AD%D9%87-%D9%88%DB%8C%D8%B1%D8%A7%DB%8C%D8%B4-%D9%BE%D8%B1%D9%88%D9%81%D8%A7%DB%8C%D9%84-s8n0zqntxzia</link>
                <description>1- فایل AdminPanelProvider رو باز می کنیم و خط آخر قطعه کد زیر رو بهش اضافه می کنیم:use App\Filament\Pages\Auth\EditProfile;
use Filament\Panel;
public function panel(Panel $panel): Panel
{
    return $panel
        // ...-&gt;login()
        -&gt;registration()
        -&gt;passwordReset()
        -&gt;profile(EditProfile::class);
}2- فایل EditProfile.phpرو در مسیر app/Filament/Pages/Auth/ ایجاد می کنیم و قطعه کد زیر رو توش کپی می کنیم:&lt;?php
namespace App\Filament\Pages\Auth;
use Filament\Forms\Components\TextInput;
use Filament\Forms\Form;
use Filament\Pages\Auth\EditProfile as BaseEditProfile;
class EditProfile extends BaseEditProfile
{
    public function form(Form $form): Form
    {
        return $form-&gt;schema([
            TextInput::make(&#039;user_name&#039;)-&gt;required()-&gt;maxLength(255),
            $this-&gt;getNameFormComponent(),
            $this-&gt;getEmailFormComponent(),
            $this-&gt;getPasswordFormComponent(),
            $this-&gt;getPasswordConfirmationFormComponent(),
       ]);
    }
}به جای سطر اول آرایه می تونیم از تابع زیر هم استفاده کنیم:protected function getUserNameFormComponent(): Component
{
    return TextInput::make(&#039;user_name&#039;)
        -&gt;label(__(&#039;fields.user_name&#039;))
        -&gt;required()
        -&gt;autofocus()
        -&gt;autocomplete();
}و تمام.</description>
                <category>آموزشگاه لاراول فارسی</category>
                <author>Mahdi Fadavi</author>
                <pubDate>Wed, 21 Feb 2024 20:35:30 +0330</pubDate>
            </item>
                    <item>
                <title>فیلامنت، ورود با نام کاربری به جای ایمیل</title>
                <link>https://virgool.io/avasam-laravel-edu/%D9%81%DB%8C%D9%84%D8%A7%D9%85%D9%86%D8%AA-%D9%88%D8%B1%D9%88%D8%AF-%D8%A8%D8%A7-%D9%86%D8%A7%D9%85-%DA%A9%D8%A7%D8%B1%D8%A8%D8%B1%DB%8C-%D8%A8%D9%87-%D8%AC%D8%A7%DB%8C-%D8%A7%DB%8C%D9%85%DB%8C%D9%84-u2u2jr9ircnl</link>
                <description>در FilamentPHP صفحه لاگین به صورت پیش فرض این جوریه که با ایمیل و کلمه عبور کار می کنه، در ادامه می نویسم که چطور باید تغییرات بدیم که با نام کاربری (مثلا شماره همراه) و کلمه عبور بتونیم لاگین کنیم:0- قبل از هر چیز یادتون باشه که در جدول کاربران فیلد user_name رو ایجاد کنید.1- فایلی رو در مسیر زیر ایجاد می کنیم:app/Filament/Auth/Login.php2- کدهای زیر رو در فایل مورد نظر کپی کنید:&lt;?php
namespace App\Filament\Pages;

use Filament\Facades\Filament;
use Filament\Pages\Auth\Login;
use Filament\Forms\Components\Component;
use Filament\Forms\Components\TextInput;
use Illuminate\Contracts\Support\Htmlable;

class CustomLogin extends Login
{
    public function mount(): void
    {
        if (Filament::auth()-&gt;check()) {
            redirect()-&gt;intended(Filament::getUrl());
        }

        /* if (app()-&gt;environment(&#039;local&#039;)) {
            $this-&gt;form-&gt;fill([
                &#039;user_name&#039; =&gt; &#039;admin&#039;,
                &#039;password&#039; =&gt; &#039;password&#039;,
            ]);
        } */
    }
    protected function getCredentialsFromFormData(array $data): array
    {
        return [
            &#039;user_name&#039; =&gt; $data[&#039;user_name&#039;],
            &#039;password&#039; =&gt; $data[&#039;password&#039;],
        ];
    }

    public function getTitle(): string|Htmlable
    {
        return __(&#039; ورود به حساب کاربری &#039;);
    }

    public function getHeading(): string|Htmlable
    {
        return __(&#039; ورود به حساب کاربری &#039;);
    }

    protected function getEmailFormComponent(): Component
    {
        return TextInput::make(&#039;user_name&#039;)
            -&gt;label(&#039;نام کاربری&#039;)
            -&gt;required()
            -&gt;autofocus()
            -&gt;extraInputAttributes([&#039;tabindex&#039; =&gt; 1])
            -&gt;autocomplete();
    }
}3- در فایل AdminPanelProvider.php در قسمت panel$ قطعه کد زیر رو تغییر بدین:-&gt;login(CustomLogin::class)و تمام</description>
                <category>آموزشگاه لاراول فارسی</category>
                <author>Mahdi Fadavi</author>
                <pubDate>Tue, 20 Feb 2024 12:21:22 +0330</pubDate>
            </item>
                    <item>
                <title>ترفندهای لاراولی - آپلود لاراول در هاست اشتراکی</title>
                <link>https://virgool.io/avasam-laravel-edu/%D8%AA%D8%B1%D9%81%D9%86%D8%AF%D9%87%D8%A7%DB%8C-%D9%84%D8%A7%D8%B1%D8%A7%D9%88%D9%84%DB%8C-%D8%A2%D9%BE%D9%84%D9%88%D8%AF-%D9%84%D8%A7%D8%B1%D8%A7%D9%88%D9%84-%D8%AF%D8%B1-%D9%87%D8%A7%D8%B3%D8%AA-%D8%A7%D8%B4%D8%AA%D8%B1%D8%A7%DA%A9%DB%8C-xgmxrgajmud2</link>
                <description>خب بعد از تلاش های فراوان و نوشتن و طراحی سایت کارفرما میگه سایت رو آنلاین کن توهم میگی اوکی اطلاعات هاست رو بده بیاد و اطلاعات رو میده میاد و میبینی هاست اشتراکی هست و تازه شانس بیاری cPanel 😄 این شروع یک سری دردسر هست که وقتی زمان نگه داری و رفع باگ میشه بیشتر هم میشن.من توی این سری چندتا از تجربیات خودم رو میگم، اگه شماهم تجربه ای داشتید برام بنویسید.Laravel in cPanel1- مرحله اول - زیپش کنتوی این مرحله کل فولدری که پروژه لاراولی ات توشه رو فشرده میکنی با فرمت زیپ (zip.)چطور؟ اینطور که مشاهده میکنید:Zip a folderاگر پروژه تون دیتابیس هم داشت که باید ازش اکسپورت بگیرید که اگه بلد نیستید اینو سرچ کنید:how export mysql database 2- مرحله دوم - زیپو آپلودش کنحالا برو تو cPanel و توی قسمت مدیریت فایل ها File Manager و توی پوشه public_htmlاون بالا دکمه آپلود رو بزن و فایل زیپ ات رو انتخاب کن و صبرکن تا آپلود تمام بشه. تموم که شد میبینی یک فولدر به همون نام زیپ ات ساخته شده که توی اون اطلاعات پروژه ات هست. همه فایل ها رو سلکت کن و از پوشه بیارشون بیرون تا توی مسیر روت Root یا همون public_html پروژه ات باشن. حالا میتونی فایل زیپ رو دیگه پاک کنی که حجم اضافه از هاست نگیره.برای دیتابیس هم باید اول یک دیتابیس بسازی در cPanel. چطور؟ اینطور که از این قسمت روMySQL® Databases کلیک میکنی. و بعد یک اسم انتخاب میکنی و دکمه Create Database رو میزنی.MySQL® Databases in CpanelCreate Databaseحالا باید برای دیتابیس ات یک کاربر تعریف کنی و به کاربرت دسترسی کامل بدی. اطلاعاتی هم که برای دیتابیس و کاربرت میزاری مثل نام کاربری و پسورد رو ذخیره کن که نیازت میشه. سعی هم کن پسورد قوی بزاری یا از Password Generator خود cPanel استفاده کنی.MySQL Add New Userو در نهایت در قسمت Add User To Database کاربری که ساختید رو به دیتابیستون اضافه کنید و دسترسی های مورد نیاز رو بهش بدید (همه رو بهش بدید بره خوشحال باشه).یادمه اولین باری که میخواستم پروژه لاراولی ام رو توی هاست اشتراکی آپلود کنم چالش های مختلفی داشتم که هرکدومشون الان یک درس و تجربست. برای هم3- مرحله سوم - تنظیماتشو آماده کندوتا فایل هست که باید تغییراتی توشون اعمال بشه تا پروژه بیاد بالا توی آدرس سایت ات.فایل اول public/index.phpاین فایل index.php که در پوشه public پروژه هست اولین فایلی هست که لاراول نیاز داره برای شروع هسته اصلی اش پس مراقب باش دقیقا کاری که میگم رو بکنی. اول همه فایل ها توی پوشه public رو بیار توی روت پروژه ات یعنی یک فولدر بالاتر و بعد توی فایل index.php این دو خط رو تغییر بده.از این :require __DIR__.&#039;/../bootstrap/autoload.php&#039;;$app = require_once __DIR__.&#039;/../bootstrap/app.php&#039;;به :require __DIR__.&#039;/bootstrap/autoload.php&#039;;$app = require_once __DIR__.&#039;/bootstrap/app.php&#039;;راه حل جایگزین (خودم اینو انجام میدم) :بجای اینکه فایل های پوشه public رو جابجا کنم و فایل index.php رو دستکاری کنم، میام و فایل htaccess. رو ویرایش میکنم که راه سریع تر و تمیز تری هم هست. مسیرش؟ توی همون پوشه publicنمیبینیش؟ باید دیدن فایل های مخفی در cPanel رو فعال کنی چطور؟ اینطور:دیدن فایل های مخفی در cPanel   اولا یه کپی از این فایل میگیرم و توی روت پیست میکنم پس الان 2 تا فایل htaccess. داریم یکی توی پوشه public یکی هم توی روت. حالا اینی که توی روت هست رو ویرایش میکنیم. راست کلیک کنید و گزینه edit رو بزنید میتونید یک فایل رو توی cPanel ویرایش کنید. حالا در بالای کدها این چندخط رو کپی کنید، سیو کنید و تمامممم.&lt;IfModule mod_rewrite.c&gt;   RewriteEngine On   RewriteRule ^(.*)$ public/$1 [L]&lt;/IfModule&gt; فایل دوم env.این فایل هم که اطلاعات برنامه مثل دیتابیس و Email سرویس و ... توش ذخیره میشن پس باید آپدیت اش کنیم با اطلاعات دیتابیس جدیدمون، نام دیتابیس و نام کاربری و پسورد.تنظیمات فایل env.حالا دیگه سایت آماده است و باید توی آدرس دامین ات نمایش داده بشه. امیدوارم این مطلب برات مفید بوده باشه.توی مقاله بعدی درباره تجربه هام در زمان نگه داری و پشتیبانی سایت لاراولی روی هاست اشتراکی مینویسم حتما اونم بخون. 🔨🪓</description>
                <category>آموزشگاه لاراول فارسی</category>
                <author>نیما جهان بین</author>
                <pubDate>Wed, 14 Feb 2024 12:49:39 +0330</pubDate>
            </item>
                    <item>
                <title>آموزش چند زبانه کردن لاراول</title>
                <link>https://virgool.io/avasam-laravel-edu/%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%DA%86%D9%86%D8%AF-%D8%B2%D8%A8%D8%A7%D9%86%D9%87-%DA%A9%D8%B1%D8%AF%D9%86-%D9%84%D8%A7%D8%B1%D8%A7%D9%88%D9%84-g2smnhakrgst</link>
                <description> https://webazin.net/%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%DA%86%D9%86%D8%AF-%D8%B2%D8%A8%D8%A7%D9%86%D9%87-%DA%A9%D8%B1%D8%AF%D9%86-%D9%BE%D8%B1%D9%88%DA%98%D9%87-%D9%87%D8%A7%DB%8C-%D9%84%D8%A7%D8%B1%D8%A7%D9%88%D9%84%DB%8C/ اگر به فکر چند زبانه کردن پروژه های لاراولی خودتون هستید و این کار زمان زیادی از شما میگیره پیشنهاد میکنم ویدیوی بالا را مشاهده کنید</description>
                <category>آموزشگاه لاراول فارسی</category>
                <author>وب آذین</author>
                <pubDate>Mon, 12 Feb 2024 15:53:26 +0330</pubDate>
            </item>
                    <item>
                <title>رفع کند بودن بالا آمدن پنل Filamentphp</title>
                <link>https://virgool.io/avasam-laravel-edu/%D8%B1%D9%81%D8%B9-%DA%A9%D9%86%D8%AF-%D8%A8%D9%88%D8%AF%D9%86-%D8%A8%D8%A7%D9%84%D8%A7-%D8%A2%D9%85%D8%AF%D9%86-%D9%BE%D9%86%D9%84-filamentphp-f9rwbmez0eeu</link>
                <description>در فیلامنت بعضی مواقع صفحات به کندی لود می شدند که با بررسی که انجام دادم متوجه شده که در حال لود کردن فونت از آدرس زیر هست:https://fonts.bunny.netبرای رفع این مشکل کافیه به آدرس زیر برید:vendor\filament\filament\src\FontProviders\BunnyFontProvider.phpو در خط 15 کد زیر رو اضافه کنید:return new HtmlString(&amp;quot&amp;quot);</description>
                <category>آموزشگاه لاراول فارسی</category>
                <author>Mahdi Fadavi</author>
                <pubDate>Sun, 28 Jan 2024 17:26:58 +0330</pubDate>
            </item>
                    <item>
                <title>آموزش نصب و راه اندازی inertia - vue3</title>
                <link>https://virgool.io/avasam-laravel-edu/%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%D9%86%D8%B5%D8%A8-%D9%88-%D8%B1%D8%A7%D9%87-%D8%A7%D9%86%D8%AF%D8%A7%D8%B2%DB%8C-inertia-vue3-dn3ni9a5fnjl</link>
                <description>آموزش نصب و راه اندازی inertia - vue3Vue.js یک ابزار قدرتمند است که بسیاری از مزایای زیادی نسبت به استفاده از قالب های Blade لاراول را دارد، با این حال در ابتدا ممکن است برای شما سخت باشد که بخش های front-end و backend خود را با هم ترکیب کنید. در اینجا “Inertia” به کمک شما می آید، این ابزار به شما کمک می کند تا ارتباط بین بخش های front-end و backend خود را با یکدیگر برقرار کنید. این روش به عنوان &#x60;modern monolith&#x60; شناخته می شود.نحوه راه اندازی Inertiaموارد زیر مربوط به لاراول 10 (به همراه Vite) است و فرض می‌کنیم که شما از قبل با Vue آشنایی دارید.مرحله 1 - نصب dependenciescomposer require inertiajs/inertia-laravel tightenco/ziggynpm install @inertiajs/inertia @inertiajs/inertia-vue3 @inertiajs/progress @vitejs/plugin-vue vueمرحله 2 - ایجاد ساختار پوشه هاساختار پوشه های پروژه را به شکل زیر ایجاد کنید.resources
--| js
----| Components
----| Layouts
----| Pagesشما میتوانید که ساختار را متناسب با پروژه خودتان شخصی سازی کنید، فقط توجه داشته باشید که حتما باید مسیرها (path) جدید را در فایل های config بروزرسانی کنید.مرحله 3 - ایجاد یک فایل root با فرمت bladeفایل resources/views./app.blade.php را ایجاد کنید و کد زیر را جایگذاری کنید.&lt;!DOCTYPE html&gt;
&lt;html lang=&amp;quot{{ str_replace(&#039;_&#039;, &#039;-&#039;, app()-&gt;getLocale()) }}&amp;quot&gt;
    &lt;head&gt;
        &lt;meta charset=&amp;quotutf-8&amp;quot&gt;
        &lt;meta name=&amp;quotviewport&amp;quot content=&amp;quotwidth=device-width, initial-scale=1&amp;quot&gt;

        &lt;title inertia&gt;{{ config(&#039;app.name&#039;, &#039;Laravel&#039;) }}&lt;/title&gt;

        @routes
        @vite(&#039;resources/js/app.js&#039;)
        @inertiaHead
    &lt;/head&gt;
    &lt;body&gt;
        @inertia
    &lt;/body&gt;
&lt;/html&gt;مرحله 4 - ایجاد middleware مربوط به Inertiaدستور زیر را اجرا کنید تا middleware مربوط به Inertia در مسیر app/Http/Middleware/HandleInertiaRequests.php ایجاد بشود.php artisan inertia:middlewareزمانی که فایل middleware ساخته شد وارد فایل app/Http/Kernel.php بشوید و به عنوان آخرین آیتم در &#x60;web middleware&#x60; کد زیر را جایگذاری کنید.&#039;web&#039; =&gt; [
    // ...
    \App\Http\Middleware\HandleInertiaRequests::class,
],مرحله 5 - تنظیم فایل کانفیگ Viteسپس شما نیاز دارید تا &#x60;Vue plugin&#x60; را در فایل کانفیگ Vite اضافه کنید، کد زیر را در vite.config.js جاگذاری کنید.import { defineConfig } from &#039;vite&#039;;
import laravel from &#039;laravel-vite-plugin&#039;;
import vue from &#039;@vitejs/plugin-vue&#039;;

export default defineConfig({
    plugins: [
        laravel({
            input: [
                &#039;resources/js/app.js&#039;,
                // Add your stylesheet here
            ],
            refresh: true,
        }),
        vue({
            template: {
                transformAssetUrls: {
                    base: null,
                    includeAbsolute: false,
                },
            },
        }),
    ],
    resolve: {
        alias: {
            &#039;@components&#039;: &#039;/resources/js/Components&#039;,
            &#039;@layouts&#039;: &#039;/resources/js/Layouts&#039;,
            &#039;@pages&#039;: &#039;/resources/js/Pages&#039;
        },
    },
});ایجاد یک فایل jsconfig.json هم بسیار مهم است تا به IDE شما کمک کند تا alias هایی که در بالا تعریف کرده ایم را شناسایی کند.{
    &amp;quotcompilerOptions&amp;quot: {
        &amp;quotbaseUrl&amp;quot: &amp;quot.&amp;quot,
        &amp;quotpaths&amp;quot: {
            &amp;quot@components/*&amp;quot: [&amp;quotresources/js/Components/*&amp;quot],
            &amp;quot@pages/*&amp;quot: [&amp;quotresources/js/Pages/*&amp;quot],
            &amp;quot@layouts/*&amp;quot: [&amp;quotresources/js/Layouts/*&amp;quot]
        }
    },
    &amp;quotexclude&amp;quot: [&amp;quotnode_modules&amp;quot, &amp;quotpublic&amp;quot]
}مرحله 6 - ساخت برنامه با Inertiaدر مسیر resources/js/app.js ما نیاز به اجرای برنامه inertia داریم که میتوانید با استفاده از کد زیر این کار را انجام بدهید.import &#039;./bootstrap&#039;;
// Import your stylesheet here 

import { createApp, h } from &#039;vue&#039;;
import { createInertiaApp } from &#039;@inertiajs/inertia-vue3&#039;;
import { InertiaProgress } from &#039;@inertiajs/progress&#039;;
import { resolvePageComponent } from &#039;laravel-vite-plugin/inertia-helpers&#039;;
import { ZiggyVue } from &#039;../../vendor/tightenco/ziggy/dist/vue.m&#039;;

const appName = window.document.getElementsByTagName(&#039;title&#039;)[0]?.innerText || &#039;Reflect&#039;;

createInertiaApp({
    title: (title) =&gt; `${title} - ${appName}`,
    resolve: (name) =&gt; resolvePageComponent(`./Pages/${name}.vue`, import.meta.glob(&#039;./Pages/**/*.vue&#039;)),
    setup({el, app, props, plugin}) {
        return createApp({render: () =&gt; h(app, props)})
            .use(plugin)
            .use(ZiggyVue)
            .mount(el);
    },
}).then(() =&gt; {
    InertiaProgress.init({});
})ساخت بخش front-end برنامهاول از همه، ما باید یک مسیر برای صفحه خود ایجاد کنیم. به جای بازگرداندن یک view، اکنون یک درخواست Inertia برمی گردانیم:Route::get(&#039;/hello-world&#039;, function () {
    return Inertia::render(&#039;HelloWorld&#039;, [
        &#039;message&#039; =&gt; &#039;Look mum, I\&#039;m doing Inertia!&#039;,
    ]);
});همینطور که مشاهده میکنید ما الان با استفاده از متد Inertia::render()، اطلاعات مربوط به کامپوننت Vue را ارسال میکنیم و برای ارسال پارامتر به کامپوننت هم میتوانید مانند لاراول اطلاعات را ارسال کنید. صفحات کامپوننت ها در پوشه resources/js/Pages قرار دارند، اینجا باید یک کامپوننت Vue جدید به اسم HelloWorld.vue ایجاد کنیم.&lt;template&gt;
    &lt;div&gt;
        &lt;h1&gt;Hello World!&lt;/h1&gt;
        &lt;p&gt;{{ message }}&lt;/p&gt;
    &lt;/div&gt;
&lt;/template&gt;


export default {
    props: {
        message: {
            type: String,
            required: true
        }
    }
}
اختیاری - نصب کردن Tailwind CSSدر اینجا ما پروژه Vue خودمون را راه اندازی کرده ایم، حالا وقتشه که قالب پروژه را دیزاین کنیم.مرحله 1 - نصب dependenciesnpm install tailwindcss @tailwindcss/forms @tailwindcss/typography postcss postcss-importautoprefixerاجرا دستور زیر اختیاری میباشد و در صورتی باید اجرا شود که شما بخواهید از Tailwind UI در ظاهر پروژتون استفاده کنید.npm install @headlessui/vue @heroicons/vueمرحله 2 - کانفیگ کردن Tailwind CSSفایل کانفیگ tailwind.config.js را ایجاد کنید، اگر فایل را ایجاد نکنید Tailwind بدون فایل کانفیگ نمیتونه کار کنه./** @type {import(&#039;tailwindcss&#039;).Config} */
module.exports = {
    content: [
        &amp;quot./app/**/*.blade.php&amp;quot,
        &amp;quot./resources/**/*.blade.php&amp;quot,
        &amp;quot./resources/**/*.js&amp;quot,
        &amp;quot./resources/**/*.vue&amp;quot
    ],
    plugins: [
        require(&#039;@tailwindcss/forms&#039;),
        require(&#039;@tailwindcss/typography&#039;),
    ]
}module.exports = {
  plugins: {
    tailwindcss: {},
    autoprefixer: {},
  },
}مرحله 3 - افزودن Tailwind در فایل stylesheetدر نهایت شما باید کد زیر را در فایل stylesheet جایگذاری کنید.@tailwind base;
@tailwind components;
@tailwind utilities;حالا شما میتوانید از Tailwind درون پروژه خودتون استفاده کنید. خیلی ممنون از شما که این مقاله را مطالعه کردید، اگر در خصوص در این مقاله هرگونه مشکل/سوالی داشتید حتما در قسمت نظرات سایت با ما در میان بگذراید.منبع: وبسایت میموک</description>
                <category>آموزشگاه لاراول فارسی</category>
                <author>علیرضا تحریری</author>
                <pubDate>Sat, 27 Jan 2024 23:43:59 +0330</pubDate>
            </item>
                    <item>
                <title>جستجو روی بیش از یک فیلد در فیلامنت</title>
                <link>https://virgool.io/avasam-laravel-edu/%D8%AC%D8%B3%D8%AA%D8%AC%D9%88-%D8%B1%D9%88%DB%8C-%D8%A8%DB%8C%D8%B4-%D8%A7%D8%B2-%DB%8C%DA%A9-%D9%81%DB%8C%D9%84%D8%AF-%D8%AF%D8%B1-%D9%81%DB%8C%D9%84%D8%A7%D9%85%D9%86%D8%AA-gcdo4p4szdd0</link>
                <description>اگر بخواهیم اطلاعات نام و نام خانواگی کاربر رو در جدول به صورت یک فیلد نام و نام خانوادگی در یک ستون نمایش بدهیم یک روش اینه که مثلا در مدل کاربر یک تابع بنویسیم که full_name رو برگردونه، حالا زمانی که بخواهیم روی همان ستون جستجو داشته باشیم به خطا خواهیم خورد ، چون فیلد full_name در دیتابیس وجود ندارد.برای رفع این مشکل یکی از راه حل ها این هست که کد رو به صورت زیر بنویسیم:TextColumn::make(&#039;full_name&#039;)-&gt;searchable([&#039;first_name&#039;, &#039;last_name&#039;])</description>
                <category>آموزشگاه لاراول فارسی</category>
                <author>Mahdi Fadavi</author>
                <pubDate>Sat, 27 Jan 2024 12:16:01 +0330</pubDate>
            </item>
                    <item>
                <title>رفع مشکل پلاگین Jalali DateTime Picker (AriaieBOY) در زمان استفاده از فیلتر ها در فیلامنت</title>
                <link>https://virgool.io/avasam-laravel-edu/%D8%B1%D9%81%D8%B9-%D9%85%D8%B4%DA%A9%D9%84-%D9%BE%D9%84%D8%A7%DA%AF%DB%8C%D9%86-jalali-datetime-picker-ariaieboy-%D8%AF%D8%B1-%D8%B2%D9%85%D8%A7%D9%86-%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87-%D8%A7%D8%B2-%D9%81%DB%8C%D9%84%D8%AA%D8%B1-%D9%87%D8%A7-%D8%AF%D8%B1-%D9%81%DB%8C%D9%84%D8%A7%D9%85%D9%86%D8%AA-jtu3d2nynr7t</link>
                <description>یکی از پلاگین های خیلی خوب و کاربردی در filamentphp برای انتخاب تاریخ و زمان Jalali DateTime Picker نوشته شده توسط AriaieBOY هست ، ولی من متوجه شدم که زمانی که در فیلترها از این پلاگین استفاده می کنیم پرش داره ، برای رفع مشکل به فایل زیر رو باز کنیدvendor/ariaieboy/filament-jalali-datetimepicker/resources/views/components/jalali-datetimepicker.blade.phpو به خط شماره 111 برید و به شکل زیر تغییرش بدین و تمامx-float.placement.bottom-start.offset.autoPlacement.shift=&quot;{ offset: 8 }&quot;</description>
                <category>آموزشگاه لاراول فارسی</category>
                <author>Mahdi Fadavi</author>
                <pubDate>Wed, 24 Jan 2024 19:16:56 +0330</pubDate>
            </item>
                    <item>
                <title>آموزش نصب لاراول 10</title>
                <link>https://virgool.io/avasam-laravel-edu/%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%D9%86%D8%B5%D8%A8-%D9%84%D8%A7%D8%B1%D8%A7%D9%88%D9%84-10-w33bscqoskby</link>
                <description>آموزش نصب لاراول 10در این مقاله، نحوه نصب لاراول ۱۰ بر روی لوکال هاست توضیح داده شده است. برای نصب لاراول ۱۰، ابتدا باید الزامات سرور را بررسی کنید. الزامات سرور شامل PHP &gt;= 8.1 و 12 extension دیگر است که در مستندات لاراول ذکر شده‌اند. سپس می‌توانید با استفاده از مراحل زیرلاراول را نصب کنید.مرحله 1 - لاراول ۱۰ را نصب کنید:composer create-project laravel/laravel example-appسپس وارد پوشه پروژه نصب شده بشوید:cd example-app https://mimoc.ir/articles/%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%D9%86%D8%B5%D8%A8-%D9%84%D8%A7%D8%B1%D8%A7%D9%88%D9%84-10 مرحله 2 - برنامه را راه‌اندازی کنید:سپس برای راه‌اندازی برنامه، دستور زیر را وارد کنید:php artisan serveالزامات سرور:PHP &gt;= 8.1Ctype PHP ExtensioncURL PHP ExtensionDOM PHP ExtensionFileinfo PHP ExtensionFilter PHP ExtensionHash PHP ExtensionMbstring PHP ExtensionOpenSSL PHP ExtensionPCRE PHP ExtensionPDO PHP ExtensionSession PHP ExtensionTokenizer PHP ExtensionXML PHP Extensionپروژه لاراولی با موفقیت نصب شد. هم‌اکنون می‌توانید وارد آدرس &#x60;http://localhost:8000&#x60; شوید و پروژه لاراولی اجرا شده را مشاهده کنید.منبع: وبسایت میموک</description>
                <category>آموزشگاه لاراول فارسی</category>
                <author>علیرضا تحریری</author>
                <pubDate>Tue, 23 Jan 2024 19:04:10 +0330</pubDate>
            </item>
                    <item>
                <title>آموزش آپلود تصویر در لاراول با نمونه کد</title>
                <link>https://virgool.io/avasam-laravel-edu/%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%D8%A2%D9%BE%D9%84%D9%88%D8%AF-%D8%AA%D8%B5%D9%88%DB%8C%D8%B1-%D8%AF%D8%B1-%D9%84%D8%A7%D8%B1%D8%A7%D9%88%D9%84-%D8%A8%D8%A7-%D9%86%D9%85%D9%88%D9%86%D9%87-%DA%A9%D8%AF-bna5hk8fttmf</link>
                <description>آموزش آپلود تصویر در لاراول با نمونه کد در این پست، قصد دارم در مورد آپلود تصویر در لاراول توضیح دهم.پس از نصب لاراول، پروژه کد را در ویرایشگر کد باز کنید و مراحل زیر را دنبال کنید.مرحله - 1برای کنترل تمام عملیات آپلود تصویر، با اجرای دستور زیر یک کنترلر ایجاد کنید.php artisan make:controller ImageControllerاین دستور فایل Controller را در مسیر app\Http\Controllers ایجاد می کند.حالا کدهای زیر را داخل ImageController قرار دهید.&lt;?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class ImageController extends Controller
{
    // View File To Upload Image
    public function index()
    {
        return view(&#039;image-form&#039;);
    }

    // Store Image
    public function storeImage(Request $request)
    {
        $request-&gt;validate([
            &#039;image&#039; =&gt; &#039;required|image|mimes:png,jpg,jpeg|max:2048&#039;
        ]);

        $imageName = time().&#039;.&#039;.$request-&gt;image-&gt;extension();

        // Public Folder
        $request-&gt;image-&gt;move(public_path(&#039;images&#039;), $imageName);

        // //Store in Storage Folder
        // $request-&gt;image-&gt;storeAs(&#039;images&#039;, $imageName);

        // // Store in S3
        // $request-&gt;image-&gt;storeAs(&#039;images&#039;, $imageName, &#039;s3&#039;);

        //Store IMage in DB 


        return back()-&gt;with(&#039;success&#039;, &#039;Image uploaded Successfully!&#039;)
        -&gt;with(&#039;image&#039;, $imageName);
    }
}مرحله - 2مرحله بعد، به روزرسانی مسیرهاست. برای به روزرسانی آن، فایل &#x60;routes/web.php&#x60; را باز کرده و مسیرهای زیر را اضافه کنید.Route::controller(ImageController::class)-&gt;group(function(){
    Route::get(&#039;/image-upload&#039;, &#039;index&#039;)-&gt;name(&#039;image.form&#039;);
    Route::post(&#039;/upload-image&#039;, &#039;storeImage&#039;)-&gt;name(&#039;image.store&#039;);
});مرحله - 3حالا زمان ایجاد یک فایل view می باشد؛ وارد مسیر &#x60;resources/views&#x60; بشوید و یک فایل جدید به نام &#x60;image-form.blade.php&#x60; ایجاد کنید.@extends(&#039;app&#039;)

@section(&#039;content&#039;)

    &lt;!-- Container (Contact Section) --&gt;
    &lt;div id=&amp;quotcontact&amp;quot class=&amp;quotcontainer&amp;quot&gt;
        &lt;h1 class=&amp;quottext-center&amp;quot style=&amp;quotmargin-top: 100px&amp;quot&gt;Image Upload&lt;/h1&gt;

        @if ($message = Session::get(&#039;success&#039;))
            &lt;div class=&amp;quotalert alert-success alert-block&amp;quot&gt;
                &lt;strong&gt;{{$message}}&lt;/strong&gt;
            &lt;/div&gt;

            &lt;img src=&amp;quot{{ asset(&#039;images/&#039;.Session::get(&#039;image&#039;)) }}&amp;quot /&gt;
        @endif

        &lt;form method=&amp;quotPOST&amp;quot action=&amp;quot{{ route(&#039;image.store&#039;) }}&amp;quot enctype=&amp;quotmultipart/form-data&amp;quot&gt;
            @csrf
            &lt;input type=&amp;quotfile&amp;quot class=&amp;quotform-control&amp;quot name=&amp;quotimage&amp;quot /&gt;

            &lt;button type=&amp;quotsubmit&amp;quot class=&amp;quotbtn btn-sm&amp;quot&gt;Upload&lt;/button&gt;
        &lt;/form&gt;

    &lt;/div&gt;
@endsectionاگر به مرورگر خود رفته و به /image-upload بروید، گزینه آپلود تصویر را خواهید دید.آپلود عکسهنگامی که تصویری را انتخاب و آپلود کنید، پیام موفقیت آمیز با تصویر را خواهید دید.عکس آپلود شدهامیدوارم که این مقاله مورد استفاده شما قرار گرفته باشد، اگر در حین پیاده‌سازی با مشکل مواجه شدید، لطفاً سوال خود را در قسمت نظرات مطرح کنید.منبع: وبسایت میموک</description>
                <category>آموزشگاه لاراول فارسی</category>
                <author>علیرضا تحریری</author>
                <pubDate>Mon, 22 Jan 2024 15:11:47 +0330</pubDate>
            </item>
                    <item>
                <title>نحوه استفاده از POST با guzzlehttp/guzzle در لاراول</title>
                <link>https://virgool.io/avasam-laravel-edu/%D9%86%D8%AD%D9%88%D9%87-%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87-%D8%A7%D8%B2-post-%D8%A8%D8%A7-guzzlehttpguzzle-%D8%AF%D8%B1-%D9%84%D8%A7%D8%B1%D8%A7%D9%88%D9%84-bva0bzk0fdvn</link>
                <description>نحوه استفاده از POST با guzzlehttp/guzzle در لاراولGuzzle یک کتابخانه کلاینت HTTP PHP است که ارسال درخواست‌های HTTP به سرورهای وب و تعامل با API ها را آسان می‌کند. این کتابخانه وظایفی مانند ارسال درخواست‌های GET و POST، پردازش داده‌های پاسخ و مدیریت هدرهای درخواست را ساده می‌کند. Guzzle به طور معمول در برنامه‌های PHP برای ارتباط با سرویس‌های خارجی از طریق اینترنت استفاده می‌شود.هدف من این است که یک برنامه Laravel توسعه دهم، آن را در localhost اجرا کنم و سپس از Postman برای ارسال درخواست‌های API و دریافت پاسخ‌ها از یک برنامه شخص ثالث استفاده کنم.مرحله 1. ایجاد یک پروژه لاراولبا استفاده از دستور مربوطه، یک پروژه جدید (در اینجا projectguzzel نامیده شده است) ایجاد کنید.laravel new projectguzzelسپس به پوشه مربوطه بروید.cd projectguzzeسپس پروژه را در ویژوال استودیو کد (vscode) بارگذاری کنید.code .مرحله 2. نصب Guzzle در پروژهدر یک ترمینال جدید، کتابخانه Guzzle HTTP client را نصب کنید.composer require guzzlehttp/guzzleمرحله ۳: ایجاد یک Controller برای پردازش درخواستphp artisan make:controller PostControllerبه Controller ایجاد شده بروید (در اینجا PostController نامیده شده است)app &gt; Http &gt; Controllers &gt; PostController&lt;?php
namespace App\Http\Controllers;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;

use GuzzleHttp\Client;

class PostController extends Controller
{
    public function postRequest(Request $request)
    {
        //Create Client object to deal with
        $client = new Client();

        // Define the request parameters
        $url = &#039;https://reqres.in/api/users&#039;;

        $headers = [
            &#039;Content-Type&#039; =&gt; &#039;application/json&#039;,
        ];

        $data = [
        &#039;name&#039; =&gt; $request-&gt;input(&#039;name&#039;),
        &#039;job&#039; =&gt; $request-&gt;input(&#039;job&#039;),
        ];
 
        // POST request using the created object
        $postResponse = $client-&gt;post($url, [
            &#039;headers&#039; =&gt; $headers,
            &#039;json&#039; =&gt; $data,
        ]);

        // Get the response code
        $responseCode = $postResponse-&gt;getStatusCode();
        return response()-&gt;json([&#039;response_code&#039; =&gt; $responseCode]);
    }
}استفاده از کتابخانه Guzzle الزامی است.use GuzzleHttp\Client;به عنوان یک API خارجی، از https://reqres.in/api/users استفاده کردیم.مرحله ۴: ایجاد Route برای متد ایجاد شدهبه پوشه API بروید.routes &gt; api.phpRoute::middleware(&#039;auth:sanctum&#039;)-&gt;get(&#039;/user&#039;, function (Request $request)
{ 
    return $request-&gt;user();
});

//add the route 
Route::post(&#039;postdata&#039;, [PostController::class, &#039;postRequest&#039;]);اضافه کردن Controller مربوطه به api.php الزامی است.use App\Http\Controllers\PostController;حالا ما در سمت سرور لاراول آماده هستیم. پروژه را در localhost اجرا کنید.php artisan serveمرحله ۵: ایجاد یک درخواست POST با استفاده از postmanدر postman به مسیر زیر درخواست بفرستید.http://localhost:8000/api/postdataهمچنین در body درخواست از داده‌های فیک ساخته شده، استفاده کنید.{
    &amp;quotname&amp;quot: &amp;quotbhathiya&amp;quot,
    &amp;quotjob&amp;quot: &amp;quotASE&amp;quot
}همانطور که در کد بالا مشاهده می شود، هنگامی که کد پاسخ 201 باشد، به معنای این است که همه چیز درست پیش رفته است. ما با موفقیت داده های جدید را به URL شخص ثالث ارسال کردیم و پاسخی دریافت می کنیم دهد که پروژه با موفقیت انجام شده است. به جای استفاده از Postman، می توانیم تماس های API را مستقیماً از برنامه خود انجام دهیم. حالا شما می دانید چگونه از guzzle در Laravel استفاده کنید.دستور composer show guzzlehttp/guzzle نسخه guzzle را نشان می دهدPOST - ارسال داده ها به سرور با هدف ایجاد یا به روزرسانی در سرور.artisan ابزار رابط خط فرمانی است که با چارچوب PHP Laravel همراه است. این ابزار به توسعه دهندگان مجموعه ای از دستورات پیش تعریف شده برای مدیریت جوانب مختلف برنامه های Laravel خود را فراهم می کند.در این مقاله درباره‌ی &#x60;&#x60;نحوه استفاده از POST با guzzlehttp/guzzle در لاراول&#x60;&#x60; صحبت کردیم. امیدواریم که این مقاله مورد استفاده شما دوستان عزیز قرار گرفته باشد. اگر هرگونه سوالی در خصوص این مقاله داشتید میتوانید در قسمت نظرات همین مقاله با ما در میان بگذارید.منبع: وبسایت میموک</description>
                <category>آموزشگاه لاراول فارسی</category>
                <author>علیرضا تحریری</author>
                <pubDate>Sat, 20 Jan 2024 14:56:33 +0330</pubDate>
            </item>
                    <item>
                <title>لاراول اسکریپت تبدیل اعداد فارسی و عربی به انگلیسی</title>
                <link>https://virgool.io/avasam-laravel-edu/%D9%84%D8%A7%D8%B1%D8%A7%D9%88%D9%84-%D8%A7%D8%B3%DA%A9%D8%B1%DB%8C%D9%BE%D8%AA-%D8%AA%D8%A8%D8%AF%DB%8C%D9%84-%D8%A7%D8%B9%D8%AF%D8%A7%D8%AF-%D9%81%D8%A7%D8%B1%D8%B3%DB%8C-%D9%88-%D8%B9%D8%B1%D8%A8%DB%8C-%D8%A8%D9%87-%D8%A7%D9%86%DA%AF%D9%84%DB%8C%D8%B3%DB%8C-ncmzs42mtnwq</link>
                <description>function convert($string)
{
$persian = [&#039;۰&#039;, &#039;۱&#039;, &#039;۲&#039;, &#039;۳&#039;, &#039;۴&#039;, &#039;۵&#039;, &#039;۶&#039;, &#039;۷&#039;, &#039;۸&#039;, &#039;۹&#039;];
$arabic = [&#039;٩&#039;, &#039;٨&#039;, &#039;٧&#039;, &#039;٦&#039;, &#039;٥&#039;, &#039;٤&#039;, &#039;٣&#039;, &#039;٢&#039;, &#039;١&#039;, &#039;٠&#039;];
$num = range(0, 9);
$convertedPersianNums = str_replace($persian, $num, $string);
$englishNumbersOnly = str_replace($arabic, $num, $convertedPersianNums);
return $englishNumbersOnly;
}</description>
                <category>آموزشگاه لاراول فارسی</category>
                <author>حسن عسکری</author>
                <pubDate>Sun, 03 Dec 2023 22:03:02 +0330</pubDate>
            </item>
                    <item>
                <title>نکته در FilamentPHP و ترجمه تب ها در Relation Manager</title>
                <link>https://virgool.io/avasam-laravel-edu/%D9%86%DA%A9%D8%AA%D9%87-%D8%AF%D8%B1-filamentphp-%D9%88-%D8%AA%D8%B1%D8%AC%D9%85%D9%87-%D8%AA%D8%A8-%D9%87%D8%A7-%D8%AF%D8%B1-relation-manager-quxfxi6fme0a</link>
                <description>زمانی که در Filament برای یک Resource بیش از یک RelationManager تعریف می کنیم لازم می شه که تب هایی که در تصویر مشاهده می کنید رو ترجمه کنیم، برای این کار لازمه که به فایل RelationManager مربوطه مراجعه کنید و در قسمت بالا کد زیر رو بنویسید:use Illuminate\Database\Eloquent\Model;و در داخل کلاس هم کد زیر رو اضافه کنید:public static function getTitle(Model $ownerRecord, string $pageClass): string
{
     return &#039;عنوان ترجمه شده تب&#039;;
}با آرزوی سلامتی و موفقیت برای دوستان عزیز.</description>
                <category>آموزشگاه لاراول فارسی</category>
                <author>Mahdi Fadavi</author>
                <pubDate>Sat, 02 Dec 2023 13:52:30 +0330</pubDate>
            </item>
            </channel>
</rss>