اذهب إلى المحتوى

Mohammad Jumaa

الأعضاء
  • المساهمات

    30
  • تاريخ الانضمام

  • تاريخ آخر زيارة

كل منشورات العضو Mohammad Jumaa

  1. عزيزي الطالب، عليك القيام بالتالي : 1. إنشاء كلاس إشعار: php artisan make:notification NewUserNotification بعد ذلك تذهب الى الملف لتوم بتعديله كالتالي: use Illuminate\Bus\Queueable; use Illuminate\Notifications\Notification; use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Notifications\Messages\MailMessage; class NewUserNotification extends Notification { use Queueable; public function via($notifiable) { return ['database']; } public function toDatabase($notifiable) { return [ 'message' => 'Hello User', ]; } public function toMail($notifiable) { return (new MailMessage) ->line(' Hi') ->action('Button', url('/')) ->line('Thankx!'); } } 2. إرسال الإشعار: لإرسال إشعار، استخدم الدالة notify في كلاس المستخدم: $user->notify(new NewUserNotification()); 3. جلب وعرض الإشعارات: $notifications = $user->notifications; لعرضها، يمكنك استخدام حلقة foreach في Blade: @foreach($notifications as $notification) <div> {{ $notification->data['message'] }} </div> @endforeach 4. تمييز الإشعارات كمقروءة: لتمييز إشعار كمقروء: $notification->markAsRead();
  2. إليك مثالًا على كيفية تحديث صفك Notification ليكون أكثر عمومية <?php namespace App\Notifications; use Illuminate\Bus\Queueable; use Illuminate\Notifications\Notification; use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Support\Facades\Auth; class GeneralNotification extends Notification { use Queueable; private $details; /** * Create a new notification instance. * * @param array $details */ public function __construct(array $details) { $this->details = $details; } /** * Get the notification's delivery channels. * * @param mixed $notifiable * @return array */ public function via($notifiable) { return ['database']; } /** * Get the array representation of the notification. * * @param mixed $notifiable * @return array */ public function toDatabase($notifiable) { return [ 'id' => $this->details['id'], 'title' => $this->details['title'], 'user' => Auth::user()->name, 'state' => $this->details['state'], // ........ ]; } } وعند إرسال الإشعار، يمكنك فعل ذلك بهذه الطريقة: use App\Notifications\GeneralNotification; $details = [ 'id' => $faculty->Faculty_ID, 'title' => 'هل توافق على اضافة كلية من قبل:', 'state' => 0, // ...... ]; $user->notify(new GeneralNotification($details));
  3. لإدراج المتغيرات $_POST في استعلامك، يجب أن تتأكد من أن القيم المدخلة من المستخدم تُعقم بشكل صحيح لمنع الهجمات من نوع SQL Injection والاستعلام الصحيح سيكون هو if (isset($_POST["btn_search"])) { $str = mysqli_real_escape_string($con, $_POST["search"]); $str1 = mysqli_real_escape_string($con, $_POST["search1"]); $str2 = mysqli_real_escape_string($con, $_POST["search2"]); $str3 = mysqli_real_escape_string($con, $_POST["search3"]); $query = " SELECT id_trainee, name, specialty, gpa FROM `tr1` WHERE ramz IN ('$str', '$str1', '$str2', '$str3') GROUP BY id_trainee HAVING COUNT(DISTINCT ramz) = 4 AND COUNT(*) = 4; "; $result = mysqli_query($con, $query); }
  4. اذا كنت تريد ذكر المواد الاخرى في الاستعلام ستكون التعليمة كالتالي SELECT id_trainee, name, specialty, gpa FROM `tr1` WHERE id_trainee LIKE '%4432%' AND ramz IN ('داعم - 221', 'انجل - 204', 'داعم - 151', 'اسلم - 101', 'شبكا - 121') AND id_trainee NOT IN ( SELECT id_trainee FROM `tr1` WHERE ramz NOT IN('داعم - 221', 'انجل - 204', 'داعم - 151', 'اسلم - 101', 'شبكا - 121') ) GROUP BY id_trainee HAVING COUNT(DISTINCT ramz) = 5; اما اذا كان عدد المواد كبير فليس من الجيد كتابة المواد في التعليمة : SELECT id_trainee, name, specialty, gpa FROM `tr1` WHERE id_trainee LIKE '%4432%' GROUP BY id_trainee HAVING SUM(CASE WHEN ramz NOT IN ('داعم - 221', 'انجل - 204', 'داعم - 151', 'اسلم - 101', 'شبكا - 121') THEN 1 ELSE 0 END) = 0 AND COUNT(DISTINCT ramz) = 5;
  5. لحل مشكلتك ، يمكنك تعديل ملف vite.config.js لكي يتضمن مسارين منفصلين للبناء (build)، واحد لـل app والآخر لـ admin يمكنك أيضا تحديث الملف blade الخاص ب Laravel ليشير إلى المسار الصحيح لملفات الـ JavaScript المبنية يجب القيام بالتلي : تعديل ملف vite.config.js يمكنك إعداد تكوينين منفصلين داخل vite.config.js، واحد لـ app والآخر لـ admin. يجب أن يشير كل تكوين إلى نقطة الدخول (entry point) الخاصة به ودليل الإخراج (outDir). تحديث ملفات blade في Laravel بعد إعداد ملف vite.config.js، يجب عليك تحديث ملفات blade الخاصة بك لتشير إلى المسار الصحيح لملفات JavaScript تشغيل عملية البناء (build) يجب تشغيل عملية البناء لكل من app و admin لضمان إنشاء الملفات المبنية في المسارات الصحيحة. import { defineConfig } from "vite"; import laravel from "laravel-vite-plugin"; import react from "@vitejs/plugin-react"; const appConfig = defineConfig({ plugins: [laravel(["resources/js/app/main.jsx"]), react()], build: { outDir: "public/js/app", rollupOptions: { input: "resources/js/app/main.jsx", }, }, }); const adminConfig = defineConfig({ plugins: [laravel(["resources/js/admin/main.jsx"]), react()], build: { outDir: "public/js/admin", rollupOptions: { input: "resources/js/admin/main.jsx", }, }, }); export default [appConfig, adminConfig]; //app blade <script type="module" src="{{ asset('js/app/main.js') }}"></script> //admin blde <script type="module" src="{{ asset('js/admin/main.js') }}"></script>
×
×
  • أضف...