<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>نوشته های narges</title>
        <link>https://virgool.io/feed/@nrgshseini</link>
        <description>Backend developer</description>
        <language>fa</language>
        <pubDate>2026-04-15 04:46:12</pubDate>
        <image>
            <url>https://files.virgool.io/upload/users/1738873/avatar/37nHiI.jpg?height=120&amp;width=120</url>
            <title>narges</title>
            <link>https://virgool.io/@nrgshseini</link>
        </image>

                    <item>
                <title>لاراول نوا (Laravel Nova)</title>
                <link>https://virgool.io/@nrgshseini/%D9%84%D8%A7%D8%B1%D8%A7%D9%88%D9%84-%D9%86%D9%88%D8%A7-laravel-nova-g1ihdqciumg8</link>
                <description> نوا یه پنل مدیریت پیشرفته و جذاب برای فریم‌ورک Laravel هستش که تونسته بسیاری از نیازهای مدیران برای استفاده از داشبوردهای مدیریتی رو حل کنه. این پنل امکانات بسیاری رو برای مدیریت منابع، کاربران، نقش‌ها و چیزای دیگه فراهم می‌کنه. میخوام به شکل خلاصه درباره قسمت‌های مختلف نوا و نحوه ساخت و مدیریت اون چیزایی که میدونم رو در اختیارتون قرار بدم.نصب و اه‌اندازی1. نصب وابستگی‌ها:composer require laravel/nova2. نصب نوا:php artisan nova:install
php artisan migrate3. پیکربندی ورود:از اونجایی که نوا نیاز به ورود داره، مطمئن بشید که سیستم احراز هویت شما به درستی پیکربندی شده باشه.حالا بریم قسمت‌های مختلف نوا رو بشناسیم1. منابع (Resources)- منابع (Resources) در نوا بالاترین سطح از واحدهای قابل مدیریت هستن و معمولاً به مدل‌های Eloquent لاراول مرتبط می‌شن. هر منبع شامل متدهای مختلفی برای تعریف فیلدها، جستجو، فیلترها و اعمال دیگه هست. دستور ایجاد Resource:php artisan nova:resource Project2. فیلدها (Fields)فیلدها برای تعریف ستون‌های مرتبط با مدل استفاده می‌شن و مشخص می‌کنن که چه اطلاعاتی در رابط کاربری نمایش داده بشه. فیلدهای متنوعی برای نمایش و ویرایش دیتا داریم.از جمله Text، Boolean، DateTime، BelongsTo، HasMany و... .1. Text::make(&#x27;Name&#x27;)- برای نمایش و ویرایش متون کوتاه.                                                                                         2. Textarea::make(&#x27;Description&#x27;)- برای نمایش و ویرایش متون بلند.3. Boolean::make(&#x27;Active&#x27;)- برای نمایش و ویرایش مقادیر صحیح یا غلط.4. Date::make(&#x27;Birthdate&#x27;)- برای نمایش و ویرایش تاریخ‌ها.5.DateTime::make(&#x27;Published At&#x27;)- برای نمایش و ویرایش زمان و تاریخ ترکیبی.6. Number::make(&#x27;Price&#x27;)- برای نمایش و ویرایش مقادیر عددی.7. Select::make(&#039;Status&#039;)-&gt;options([
draft&#039; =&gt; &#039;Draft&#039;,
&#039;published&#039; =&gt; &#039;Published&#039;,
&#039;archived&#039; =&gt; &#039;Archived&#039;,])- برای نمایش و ویرایش گزینه‌های انتخابی از یک لیست.8. BooleanGroup::make(&#x27;Permissions&#x27;)- برای نمایش و ویرایش چندین مقدار صحیح یا غلط به صورت گروهی.9. Image::make(&#x27;Profile Picture&#x27;)- برای بارگذاری و نمایش تصاویر.10.File::make(&#x27;Document&#x27;)- برای بارگذاری و نمایش فایل‌ها.11. Password::make(&#x27;Password&#x27;)- برای نمایش و ویرایش رمز عبور. تنظیمات اضافی فیلدها1. nullable (پذیرش مقادیر تهی)Text::make(&#039;Middle Name&#039;)-&gt;nullable()2. required (ضروری بودن)Text::make(&#039;First Name&#039;)-&gt;rules(&#039;required&#039;)3. unique (یکتایی)Text::make(&#039;Email&#039;)-&gt;rules(&#039;required&#039;, &#039;email&#039;, &#039;unique:users,email,{{resourceId}}&#039;)4. displayUsing (نمایش سفارشی)Number::make(&#039;Price&#039;)-&gt;displayUsing(function ($price) {
return &#039;$&#039; . number_format($price, 2);})5. sortable (قابل مرتب‌سازی بودن)Text::make(&#039;Title&#039;)-&gt;sortable()6.برای تعریف یک فیلد دارای ارتباط باید از فرمت زیر استفاده کنیم:BelongsTo::make(&amp;quotlabel&amp;quot, &amp;quotattribute&amp;quot, RelatedModel::class)این فرمت اسم ستون تو پایگاه داده که شناسه مرتبط رو نگهداری می‌کنه و کلاس مدل مرتبط که این ارتباط رو تعریف می‌کنه رو میگیره. ویژگی‌های فیلدهاا &#x60;hideFromIndex()&#x60;:  فیلد در لیست‌ (index) نمایش داده نشه.ا &#x60;hideWhenCreating()&#x60;: فیلد هنگام ایجاد یه رکورد جدید نمایش داده نشه.ا &#x60;hideWhenUpdating()&#x60;:  فیلد هنگام بروزرسانی یه رکورد موجود نمایش داده نشه.ا &#x60;nullable()&#x60;:  فیلد رو  به صورت null تعریف می‌کنه.ا &#x60;required()&#x60;:فیلد رو به عنوان اجباری تعریف می‌کنه.ا &#x60;sortable()&#x60;: مکان مرتب‌سازی رکوردها بر اساس این فیلد رو فراهم می‌کنه.ا &#x60;searchable()&#x60;:  امکان جستجوی رکوردها بر اساس این فیلد رو فراهم می‌کنه.ا &#x60;creationRules()&#x60;:  برای افزودن قوانین اعتبارسنجی هنگام ایجاد رکورد استفاده می‌شه.ا &#x60;onlyOnIndex()&#x60;: فیلد رو  طوری تنظیم می‌کنه که فقط تو صفحه شاخص نمایش داده بشه.ا &#x60;onlyOnForms()&#x60;: فیلد رو طوری تنظیم می‌کنه که  فقط تو فرم‌ها (ایجاد یا بروزرسانی) نمایش داده بشه.ا &#x60;rules()&#x60;: برای تعیین قوانین اعتبارسنجی عمومی استفاده می‌شه.ا  &#x60;readonly()&#x60;: فیلد رو به حالت فقط خواندنی تنظیم می‌کنه.بذارید مثالی از استفاده چند ویژگی برای یه فیلد &#x60;Text&#x60; بیاریم.Text::make(&#039;Name&#039;)
-&gt;sortable()
-&gt;rules(&#039;required&#039;, &#039;max:255&#039;)
-&gt;hideWhenUpdating(
-&gt;showOnDetail()
-&gt;creationRules(&#039;unique:users,name&#039;)
-&gt;updateRules(&#039;unique:users,name,{resourceId}&#039;);3.فیلترها (Filters)- از فیلترها می‌تونیم برای محدود کردن نمایش دیتا استفاده کنیم. فیلترها می‌تونن بر اساس شرط‌های مختلفی داده‌ها رو به نمایش بذارن.class UserRole extends Filter{
public $name = &#039;User Role&#039;;
public function apply(Request $request, $query, $value) {
return $query-&gt;where(&#039;role&#039;, $value);
}
public function options(Request $request){
return [
&#039;Admin&#039; =&gt; &#039;admin&#039;,
&#039;User&#039; =&gt; &#039;user&#039;,
&#039;Manager&#039; =&gt; &#039;manager&#039;,
];
}
}4.عدسی‌ها (Lenses)لنزها برای سفارشی‌سازی نمای جدول‌ها و نمایش داده‌های خاص استفاده می‌شن.class UsersWithMostPosts extends Lens{
public static function query(LensRequest $request, $query){
return $query-&gt;withCount(&#039;posts&#039;)
-&gt;orderBy(&#039;posts_count&#039;, &#039;desc&#039;);
}
public function fields(Request $request){
return [
ID::make()-&gt;sortable(),
Text::make(&#039;Name&#039;),
Number::make(&#039;Posts&#039;, &#039;posts_count&#039;)-&gt;sortable(),
];
}
}5. اکشن‌ها (Actions)اکشن‌ها برای انجام عملیات‌های خاص روی منابع تعریف می‌شن. تو فایل Resource ، می‌تونید به روش زیر دسترسی‌ها رو سفارشی‌سازی کنید:public static function authorizedToCreate(Request $request)
{
      // بازگشتtrue یا false بر اساس اینکه آیا کاربر می‌تواند رکورد جدید ایجاد کند یا نه
}
public function authorizedToUpdate(Request $request)
{
  // بازگشتtrue یا false بر اساس اینکه آیا کاربر می‌تواند این رکورد را ویرایش کند یا نه
}
public function authorizedToDelete(Request $request)
{
// بازگشتtrue یا false بر اساس اینکه آیا کاربر می‌تواند این رکورد را حذف کند یا نه 
}6.کاردها (Cards)- کارت‌ها برای نمایش اطلاعات سفارشی در داشبورد استفاده می‌شن و می‌تونن به نمودارهای متفاوت و ویجت‌های کاربردی تبدیل بشن.namespace App\Nova;
use Laravel\Nova\Metrics\Value;
use Illuminate\Http\Request;
class UserMetrics extends Resource
{
public function cards(Request $request)
{
return [
new Metrics\UsersPerDay, // نشانگر تعداد کاربران جدید در روز
];
}
}ساخت منوهامنوهای نوا به صورت اتوماتیک بر اساس منابع تعریف شده ایجاد می‌شن. برای سفارشی سازی منوها می‌تونیم از کلاس &#x60;NovaServiceProvider&#x60; استفاده کنیمnamespace App\Providers;
use Laravel\Nova\Nova;
use Illuminate\Support\Facades\Gate;
use Laravel\Nova\NovaApplicationServiceProvider;
class NovaServiceProvider extends NovaApplicationServiceProvider{
public function boot(){
parent::boot();
Nova::navigation(function (Request $request) {
return [
MenuItem::resource(\App\Nova\User::class),
MenuItem::resource(\App\Nova\Project::class),
// سایر منوها
];
});
}
}خلاصه که با استفاده از این بخش‌ها، می‌تونید نمای منابع خود را در داشبورد Laravel Nova سفارشی کنید و به کاربر امکان انجام عملیات‌های گوناگون رو بدین.</description>
                <category>narges</category>
                <author>narges</author>
                <pubDate>Mon, 26 Aug 2024 12:11:46 +0330</pubDate>
            </item>
                    <item>
                <title>آموزش Laravel Queue به زبان ساده</title>
                <link>https://virgool.io/@nrgshseini/laravel-queue-kcpjwpx4mqmy</link>
                <description>یه وقتایی هست ما تو پروژه یک سری پردازش های سنگین و وقت گیر داریم ، مثلا api زدن به یجا ، که مسلما چند ثانیه طول میکشه تا جوابش بیاد ، در این حین که api میزنیم ما نمیخوایم کاربر منتظر باشه و مجبورش کنیم صبر کنه ، میخوایم به بقیه کاراش ادامه بده و این api عه هم از طرف دیگه کارشو بکنه.به این میگن پردازش های نامتقارن (asynchronous) ، یعنی دو یا چند تا پردازش دارن همزمان کار میکنن.صف لاراول کمک میکنه برنامه ها همزمان پاسخگو باقی بمونن و کاربرا تجربه بهتری داشته باشن.قبل از شروع شما باید یه پروژه لاراول ایجاد کنید همچنین به یک پایگاه داده هم برای ذخیره اطلاعات احتیاج دارید.حالا باید queue worker رو راه اندازی و اجرا کنید.1_پیکربندی و راه اندازی laravel Queue :برای پیکربندی فایل env. رو باز کنید و متغیر &#x27;QUEUE_CONNECTION&#x27; رو روی درایو مورد نظرتون تنظیم کنید. مثلا:QUEUE_CONNECTION=database2_ایجاد jobs :توی لاراول، jobs کلاس های php هستند که وظایفی رو برای قرار دادن تو صف تعریف میکنن. با استفاده از artisan میتونید یه job جدید ایجاد کنید:php artisan make:job ProcessEmail3_تعریف منطق job :حالا میتونید کلاس job رو که  توی دایرکتوری &#x60;app/Jobs&#x60; ایجاد شده ویرایش کنید تا منطقشو تعریف کنید.class ProcessEmail implements ShouldQueue{use InteractsWithQueue, Queueable, SerializesModels;public function __construct(){//    Constructor logic (if needed)}public function handle(){//  Logic to send an email}}4_برای ارسال این job از دستور  ()ProcessEmail::dispatch  استفاده می شه.این کد job رو به صف اضافه میکنه.5_حالا برای راه اندازی Queue_‌‌Worker از دستور php artisan queue:work استفاده کنید.همچنین میتونید به صف اولویت بدید که وظایف مهم تر زودتر پردازش بشن.dispatch(new SendEmail($details))-&gt;onQueue(&#x27;high&#x27;)در نتیجه با استفاده از پردازش پس‌زمینه با Queue، برنامه لاراول خودتون رو قوی‌تر و کارآمدتر کنید!</description>
                <category>narges</category>
                <author>narges</author>
                <pubDate>Mon, 29 Jul 2024 09:41:14 +0330</pubDate>
            </item>
            </channel>
</rss>