کانال آموزشی لاراول
3.06K subscribers
120 photos
4 videos
38 links
📌 کانال اتاق برنامه نویسی
@PapiDon_coding
Download Telegram
سلام رفقا! 👋😊

تو سال جدید قراره توی اون یکی کانالمون حسابی درباره هوش مصنوعی صحبت کنیم!
از پرامپت‌نویسی گرفته تا معرفی ابزارهای خفن این حوزه! 🤖🔥

اگه به این دنیا علاقه دارید، حتماً بهمون ملحق بشید و توی بحث‌ها شرکت کنید!
منتظرتون هستیم اون طرف! 😍👇

🔗 لینک کانال
👌21👍1👏1
سال نو مبارک رفقا
سالی باشه از حال خوب، برکت و روزی فراوان و در هر مسیری که براش در تلاش هستید بهترین ها براتون پیش بیاد و موفقیت باشه ❤️🪻
10👍2🔥1
کانال آموزشی لاراول
Photo
🔥 پکیج جذاب Toast برای لاراول – معرفی Laravel Toaster Magic

اگه دنبال یه راه ساده، سریع و شیک برای نشون دادن پیام‌های toast توی پروژه‌هات با Laravel هستی، این پکیج دقیقاً همون چیزیه که لازم داری!

یه پکیج سبک و قوی برای ایجاد toast نوتیفیکیشن توی اپلیکیشن‌های Laravel هستش

🚀 ویژگی‌های جالب این پکیج:

- استفاده‌ی ساده و مستقیم داخل Laravel
- پشتیبانی کامل از زبان‌های راست‌به‌چپ مثل فارسی 🇮🇷
- حالت تاریک برای هماهنگی با UI تاریک 🌑
- پیام‌های toast کاملاً قابل شخصی‌سازی و قابل تنظیم به دلخواه شما 🎯

🛠 چطور نصبش کنیم؟

خیلی راحت! فقط چند خط کده:

1️⃣ نصب با Composer:

composer require devrabiul/laravel-toaster-magic


2️⃣ منتشر کردن فایل‌های پکیج:

php artisan vendor:publish --provider="Devrabiul\ToastMagic\ToastMagicServiceProvider"


3️⃣ اضافه کردن استایل‌ها و اسکریپت‌ها در فایل Blade:

<!DOCTYPE html>
<html lang="en">
<head>
{!! ToastMagic::styles() !!}
</head>
<body>
// محتوای شما

{!! ToastMagic::scripts() !!}
</body>
</html>


🎯 چطور toast نمایش بدیم؟

توی متدهای Controller به همین راحتی:

use Devrabiul\ToastMagic\Facades\ToastMagic;

class TeamController extends Controller
{
public function store()
{
ToastMagic::success('Team added successfully!');
return redirect('/teams');
}
}


📌 همچنین می‌تونی از toastهای دیگه مثل:

- ⚠️ warning
- error
- ℹ️ info

استفاده کنی.

💻 Toast از طریق JavaScript

اگر خواستی toast رو مستقیم از JS اجرا کنی:

const toast = new ToastMagic();
toast.success("Success!", "Your data has been saved!");


---

📚 برای اطلاعات بیشتر یا دیدن سورس‌کدش:

🔗 Link





کانال تخصصی لاراول
📌 @PapiDon_state

☕️ اتاق برنامه‌نویسی
📌 @PapiDon_coding
15👍4🔥1
🔥1👏1
کانال آموزشی لاراول
Photo
فصل اول دوره کامل شد!

اگه همیشه برات سوال بوده که هوش مصنوعی چیه و چطور کار می‌کنه، این فصل دقیقاً برای توئه!

توی این فصل، همه‌چی رو ساده، قابل فهم و بدون پیچیدگی توضیح دادم:

💡 درک اولیه از AI
🕰 تاریخچه‌ی هوش مصنوعی
🧠 مفاهیم پایه‌ای و مهم
⚙️ طرز فکر کردن هوش مصنوعی
🔧 مدل‌ها و پارامترها

مهم نیست مبتدی باشی یا فقط کنجکاوی — این ویدیوها برای همه طراحی شدن تا از یادگیری لذت ببرند! 😊


▶️ لینک دسترسی به دوره

https://youtu.be/pKQDvl34N7E?si=YuqOAXEKFvbS0Raj



کانال تخصصی لاراول
📌 @PapiDon_state

☕️ اتاق برنامه‌نویسی
📌 @PapiDon_coding
👍6🔥1
سیر تا پیاز Codex: دستیار هوش مصنوعی که کدنویسی رو متحول می‌کنه!

🔗 مطالعه این مطلب در اینجا 👉
👍41
👏1
کانال آموزشی لاراول
Photo
🔐 ورود بدون رمز عبور با Passkeys در لاراول!
توسط Spatie

آیا دوست داری کاربران سایتت بدون وارد کردن ایمیل و رمز عبور وارد بشن؟ فقط با یه تأیید ساده از طریق موبایل یا مرورگر؟

💡 پکیج Laravel Passkeys از تیم معروف Spatie که این کار رو توی اپلیکیشن‌های لاراول خیلی راحت و حرفه‌ای انجام می‌ده.

🎯 چیه اصلاً Passkey؟

یه کلید امنه که توی ابزارهایی مثل:

- 1Password
- مدیریت رمز عبور در macOS
- و سایر اپ‌های رمزنگاری‌شده

ذخیره می‌شه. وقتی از Passkey استفاده می‌کنی، دیگه لازم نیست ایمیل یا پسورد بزنی؛ فقط با یک کلیک یا اثر انگشت یا Face ID وارد می‌شی.


⚙️ این پکیج چه کاری می‌کنه؟

این پکیج بهت اجازه می‌ده:

🔹 به‌راحتی برای کاربر Passkey بسازی
🔸 سیستم ورود بدون رمز عبور رو در برنامه‌ت فعال کنی.
🔹 با استفاده از کامپوننت‌های Livewire یا Blade این سیستم رو پیاده‌سازی کنی

⚒️ پشتیبانی از Livewire و Inertia

در حال حاضر، این پکیج به‌صورت پیش‌فرض با Livewire کار می‌کنه، ولی اگر از Inertia استفاده می‌کنی، می‌تونی خودت یه کامپوننت سفارشی با React یا Vue بسازی.

📘 برای این مورد، صفحه‌ی "Usage in Inertia" توی داکیومنتش رو حتماً ببین!

🚀 شروع کار با Passkeys

📦 سورس کد این پکیج در گیت‌هاب منتشر شده:

🔗 لینک اینجا

📚 توی مستنداتش می‌تونی قدم‌به‌قدم یاد بگیری چطور نصبش کنی و ازش استفاده ببری.

حتی یه اپلیکیشن دمو هم ساختن تا بتونی این سیستم رو به‌صورت واقعی ببینی و تست کنی.

📌 نتیجه‌گیری کوتاه

اگه دنبال راهی امن‌تر، سریع‌تر و مدرن‌تر برای ورود کاربران هستی، بدون شک Passkeys یه انتخاب فوق‌العاده‌ست برای اپلیکیشن‌های لاراولی — مخصوصاً اگه تجربه‌ی کار با پکیج‌های Spatie رو داشته باشی، می‌دونی چقدر تمیز و استاندارد کار می‌کنن.


کانال تخصصی لاراول
📌 @PapiDon_state

☕️ اتاق برنامه‌نویسی
📌 @PapiDon_coding
🔥54👍1👏1🎉1💯1
کانال آموزشی لاراول pinned «🔐 ورود بدون رمز عبور با Passkeys در لاراول! توسط Spatie آیا دوست داری کاربران سایتت بدون وارد کردن ایمیل و رمز عبور وارد بشن؟ فقط با یه تأیید ساده از طریق موبایل یا مرورگر؟ 💡 پکیج Laravel Passkeys از تیم معروف Spatie که این کار رو توی اپلیکیشن‌های لاراول…»
👍1🎉1
کانال آموزشی لاراول
Photo
📘 در لاراول Query Scope: یاد بگیر چطور استادش بشی! بخش اول

وقتی داری اپلیکیشن لاراول می‌سازی، حتماً بارها پیش میاد که باید یه شرط خاص رو توی چندین قسمت مختلف تکرار کنی.

👀 مثلاً:

اپلیکیشن چند تیمی ساختی و باید همیشه team_id کاربر رو توی کوئری‌ها فیلتر کنی
یا یه بلاگ داری و مدام باید بررسی کنی پست منتشر شده یا نه (published_at)

🤯 تکرار این شرط‌ها هم خسته‌کننده‌ست، هم مستعد خطا.

🎯 راه حل: Query Scope

یه راه ساده برای تعریف شرط‌های قابل استفاده مجدد توی مدل‌هات هست.
این شرط‌ها معمولاً به‌صورت متد روی مدل (Model) تعریف می‌شن یا می‌تونی یه کلاس اختصاصی برایش بسازی.

🧩 دو نوع Scope داریم:


1️⃣ Local Scope ➜ باید دستی توی کوئری صدا زده بشه

2️⃣ Global Scope ➜ به‌صورت خودکار روی همه کوئری‌های اون مدل اعمال می‌شه

مثلاً ویژگی Soft Delete خود لاراول از Global Scope استفاده می‌کنه!

🌿 Local Query Scope

فرض کن یه بلاگ داری با دو صفحه در پنل ادمین:

پست‌های منتشر شده

🚧 پست‌های منتشر نشده

مدل ما: App\Models\Article
ستون زمان انتشار: published_at (nullable)

اگر published_at در گذشته باشه = منتشر شده
اگر null یا در آینده باشه = هنوز منتشر نشده

🔸 کوئری به روش معمول:

$publishedPosts = Article::query()
->where('published_at', '<=', now())
->get();


🔸 کوئری پست‌های منتشر نشده:

$unpublishedPosts = Article::query()
->where(function (Builder $query) {
$query->whereNull('published_at')
->orWhere('published_at', '>', now());
})->get();


🥴 اینا ساده‌ان ولی اگه توی کل اپ تکرار بشن، احتمال خطا بالا می‌ره.

راه حل: تعریف دو scope به اسم scopePublished و scopeNotPublished
داخل مدل:

final class Article extends Model
{
public function scopePublished(Builder $query): Builder
{
return $query->where('published_at', '<=', now());
}

public function scopeNotPublished(Builder $query): Builder
{
return $query->where(function (Builder $query) {
return $query->whereNull('published_at')
->orWhere('published_at', '>', now());
});
}
}


🔸 حالا کوئری‌ها خیلی شیک و تمیز می‌شن:

$publishedPosts = Article::query()->published()->get();
$unpublishedPosts = Article::query()->notPublished()->get();




کانال تخصصی لاراول
📌 @PapiDon_state

☕️ اتاق برنامه‌نویسی
📌 @PapiDon_coding
👌8👍3🔥31🎉1
کانال آموزشی لاراول
📘 در لاراول Query Scope: یاد بگیر چطور استادش بشی! بخش اول وقتی داری اپلیکیشن لاراول می‌سازی، حتماً بارها پیش میاد که باید یه شرط خاص رو توی چندین قسمت مختلف تکرار کنی. 👀 مثلاً: اپلیکیشن چند تیمی ساختی و باید همیشه team_id کاربر رو توی کوئری‌ها فیلتر کنی…
📘 بخش دوم / در لاراول Query Scope: یاد بگیر چطور استادش بشی!

🧩 اضافه کردن Global Scope به مدل

دو روش داریم:

1️⃣ با Attribute جدید لاراول:

#[ScopedBy(TeamScope::class)]
final class Article extends Model


2️⃣ با متد booted در مدل:

protected static function booted(): void
{
static::addGlobalScope(new TeamScope());
}


حالا بدون نوشتن where، همیشه فقط مقالات مرتبط با تیم خود کاربر برمی‌گرده:

Article::all(); // فقط برای تیم خودش


😎 Anonymous Global Scope

می‌تونی به‌جای ساختن کلاس، همون‌جا داخل مدل تعریفش کنی:

static::addGlobalScope('team_scope', function (Builder $builder) {
$builder->where('team_id', Auth::user()->team_id);
});


🚫 حذف Global Scope

گاهی لازمه Scope رو نادیده بگیری:

🔸 حذف همه Scope‌ها:

Article::query()->withoutGlobalScopes()->get();


🔸 حذف بعضی Scope‌ها:

->withoutGlobalScopes([
TeamScope::class,
'another_scope',
])


🔸 حذف فقط یکی:

->withoutGlobalScope(TeamScope::class)


⛔️ توجه: اگه از ()DB::table استفاده کنی، هیچ Global Scope اعمال نمی‌شه.

🧪 تست کردن Scopeها

تست scopePublished و scopeNotPublished

1️⃣ تست کن فقط مقالات منتشر شده بیاد

2️⃣ تست کن فقط مقالات منتشر نشده بیاد

🔸 نمونه تست:

$this->assertCount(2, $articles);
$this->assertTrue($articles->contains($this->publishedArticles->first()));


🧪 تست کردن در Controller

گاهی لازمه مطمئن شی که Scope توی کنترلر استفاده شده.

مثال:

final class ArticleController extends Controller
{
public function index()
{
return view('articles.index', [
'articles' => Article::all(),
]);
}
}


🔸 تست:

$this->actingAs($user)
->get('/articles')
->assertViewHas(
'articles',
fn (Collection $articles) =>
$articles->pluck('id')->all() === $articlesForTeamOne->pluck('id')->all()
);


نتیجه نهایی

- حالا دیگه فرق بین Local و Global Query Scope رو می‌دونی
- یاد گرفتی چطور بسازیشون
- بلدی چطور تست‌شون کنی

و از همه مهم‌تر:

🔁 می‌تونی کدت رو مرتب‌تر، امن‌تر و قابل نگهداری‌تر بنویسی! 😎




کانال تخصصی لاراول
📌 @PapiDon_state

☕️ اتاق برنامه‌نویسی
📌 @PapiDon_coding
👏8🎉3
کانال آموزشی لاراول
Photo
پاک‌سازی هوشمند کش‌های منقضی‌شده در لاراول با ابزار Cache Evict

استفاده از کش یکی از روش‌های مهم برای افزایش سرعت دریافت داده‌ها و کاهش فشار روی سرور توی پروژه‌های واقعی محسوب می‌شه.

لاراول به‌صورت پیش‌فرض چندتا کش‌درایور مثل file و database داره که حسابی به درد توسعه‌دهنده‌ها می‌خورن.

📦 اما مشکل زمانی پیش میاد که آیتم‌های موقتی زیادی با کلیدهای تصادفی ساخته می‌شن و اگر به موقع حذف نشن، فضای ذخیره‌سازی رو پر می‌کنن. برای همین، پاک‌سازی کش‌های منقضی‌شده هر از گاهی کاملاً ضروریه.

🧹 در لاراول می‌تونی کش رو با این دو روش پاک کنی:

* استفاده از ()Cache::flush
* یا دستور php artisan cache:clear

⚠️ ولی باید بدونی که این روش‌ها کل کش رو پاک می‌کنن؛ حتی کش‌های سیستمی خود لاراول. این کار ممکنه باعث بشه بعضی فایل‌ها به خاطر تفاوت دسترسی کاربران، دچار مشکل بشن (مثلاً وقتی /bootstrap/cache مال یه کاربره و کش رو کاربر دیگه ساخته).

برای حل این مشکل، یه پکیج فوق‌العاده به اسم Laravel Cache Evict ساخته شده توسط Vincent Wong که فقط آیتم‌های منقضی‌شده رو پاک می‌کنه — اونم خیلی سبک و سریع، مخصوصاً برای database cache به‌صورت non-blocking.

🛠 روش نصب و استفاده

📥 برای نصب این پکیج از دستور زیر استفاده کن:

composer require vectorial1024/laravel-cache-evict


▶️ برای پاک‌سازی کش پیش‌فرض لاراول:

php artisan cache:evict


📂 و اگر خواستی مشخص کنی که دقیقاً کدوم درایور پاک بشه (مثلاً file):

php artisan cache:evict file


📚 اگر دلت می‌خواد بیشتر یاد بگیری یا استراتژی‌های پاک‌سازی دلخواه خودت رو تعریف کنی، حتماً یه نگاهی به صفحه‌ی GitHub این پکیج بنداز.





کانال تخصصی لاراول
📌 @PapiDon_state

☕️ اتاق برنامه‌نویسی
📌 @PapiDon_coding
👍7👏1
کانال آموزشی لاراول
Photo
🤖 اتصال Laravel به دنیای مدل‌های زبانی بزرگ با OpenRouter

پکیج Laravel OpenRouter بهت این امکان رو می‌ده که خیلی راحت و سریع، سرویس OpenRouter رو به اپلیکیشن Laravel خودت وصل کنی.

🔌 در واقع OpenRouter یه رابط یکپارچه برای کار با مدل‌های زبانی بزرگ (LLMs) هست. یعنی با استفاده از فقط یه API، می‌تونی به چندین مدل مختلف هوش مصنوعی دسترسی داشته باشی — بدون اینکه بخوای برای هر کدوم جداگانه تنظیمات پیچیده انجام بدی.

🧠 مثال ساده استفاده:

// متنی که می‌خوای به عنوان درخواست به مدل بدی
$content = 'Tell me a story about a rogue AI that falls in love with its creator.';

// انتخاب مدل دلخواه از لیست مدل‌های OpenRouter
$model = 'mistralai/mistral-7b-instruct:free';

// ساختار درخواست
$chatData = new ChatData(
messages: [
new MessageData(
content: $content,
role: RoleType::USER,
),
],
model: $model,
max_tokens: 100, // (می‌تونی این مقدار رو به دلخواه تنظیم کنی)
);

// ارسال درخواست و دریافت پاسخ
$chatResponse = LaravelOpenRouter::chatRequest($chatData);


🔁 اینجا از Facade پکیج استفاده شده، اما این پکیج از streaming chat هم پشتیبانی می‌کنه. یعنی می‌تونی خروجی مدل رو به‌صورت زنده و مرحله‌به‌مرحله دریافت کنی — مخصوصاً وقتی می‌خوای یه رابط کاربری تعاملی بسازی.

🌊 مثال استریم کردن پاسخ:

$promise = LaravelOpenRouter::chatStreamRequest($chatData);
$stream = $promise->wait(); // خروجی به صورت GuzzleHttp\Psr7\Stream

while (! $stream->eof()) {
$rawResponse = $stream->read(1024);

// می‌تونی خروجی خام رو فیلتر و تبدیل به فرمت استاندارد پاسخ کنی
$response = LaravelOpenRouter::filterStreamingResponse($rawResponse);
}


📚 برای اطلاعات بیشتر، نصب کامل، و دیدن سورس‌کد این پکیج، می‌تونی به صفحه GitHubش سر بزنی. همچنین برای شروع کار با OpenRouter، یه Quickstart Guide (راهنمای سریع شروع) هم براش آماده شده.

🛠 دستور نصب:

composer require moe-mizrak/laravel-openrouter

php artisan vendor:publish --tag=laravel-openrouter


اگر خواستی با مدل‌های هوش مصنوعی مختلف مثل GPT، Claude، Mistral و ... توی اپلیکیشن لاراولی‌ت تعامل داشته باشی، این پکیج یکی از راحت‌ترین و حرفه‌ای‌ترین راه‌هاست 💡




کانال تخصصی لاراول
📌 @PapiDon_state

☕️ اتاق برنامه‌نویسی
📌 @PapiDon_coding

GitHub
👏74👍1