خطوة 9: إعداد النظام الخلفي

5.0 version
Maintained

إعداد النظام الخلفي

تعتبر إضافة المؤتمرات القادمة إلى قاعدة البيانات مهمة خاصة بالمشرفين. قاعدة الإشراف الخلفية تعتبر جناح محمي فالموقع, حيث يمكن للمشرفين إدارة بيانات موقع الويب وتنسيق عمليات إرسال التعليقات وغير ذلك.

كيف يمكننا بداية العمل بسرعة ؟ باستعمال أدوات لإنشاء قاعدة الإشراف الخلفية، EasyAdmin يمكننا من القيام بهذه العملية بطريقة جيدة جدا.

تهيئة EasyAdmin

أولاً، أضف EasyAdmin للمشروع:

1
$ symfony composer req "admin:^2.0"

لإعداد EasyAdmin، تم إنشاء ملف إعداد جديد عبر وصفته Flex:

config/packages/easy_admin.yaml
1
2
3
4
5
6
#easy_admin:
#    entities:
#        # List the entity class name you want to manage
#        - App\Entity\Product
#        - App\Entity\Category
#        - App\Entity\User

تحتوي جميع الحزم المثبتة على تهيئة مثل هذه الموجودة ضمن دليل config/package/. في معظم الأوقات ، تم اختيار الإعدادات الافتراضية بعناية للعمل مع معظم التطبيقات.

قم بإزالة التعليق من الأسطر الأولى، و أضف فئات نموذج المشروع (classes)

config/packages/easy_admin.yaml
1
2
3
4
easy_admin:
    entities:
        - App\Entity\Conference
        - App\Entity\Comment

قم بالوصول الي خلفية المسؤول التي تم إنشائها في `` /admin``. بووم! واجهة إدارة لطيفة وغنية بالميزات للمؤتمرات والتعليقات:

Tip

لماذا يمكن الوصول الي الواجهة الخلفية تحت /admin؟ هذه هي البادئة الافتراضية التي تم إعدادها في config/routes/easy_admin.yaml:

config/routes/easy_admin.yaml
1
2
3
4
easy_admin_bundle:
    resource: '@EasyAdminBundle/Controller/EasyAdminController.php'
    prefix: /admin
    type: annotation

يمكنك تغييره إلى أي شيء تريده.

إضافة المؤتمرات والتعليقات غير ممكن بعد حيث من المرجح ان تحصل علي خطأ: Object of class App\Entity\Conference could not be converted to string. تحاول EasyAdmin أن تقوم بإظهار المؤتمر المرتبط بالتعليقات، ولكنها لا تستطيع ان تفعل ذلك الا اذا كان عناك تمثيل نصي للمؤتمر. أصلحه عن طريق اضافة دالة __toString() في فئة الـمؤتمر Conference:

patch_file
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
--- a/src/Entity/Conference.php
+++ b/src/Entity/Conference.php
@@ -43,6 +43,11 @@ class Conference
         $this->comments = new ArrayCollection();
     }

+    public function __toString(): string
+    {
+        return $this->city.' '.$this->year;
+    }
+
     public function getId(): ?int
     {
         return $this->id;

قم بنفس الشيء للنموذج Comment:

patch_file
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
--- a/src/Entity/Comment.php
+++ b/src/Entity/Comment.php
@@ -48,6 +48,11 @@ class Comment
      */
     private $photoFilename;

+    public function __toString(): string
+    {
+        return (string) $this->getEmail();
+    }
+
     public function getId(): ?int
     {
         return $this->id;

يمكنك الآن إضافة / تعديل / حذف المؤتمرات مباشرة من الواجهة الخلفية للمشرف. العب بها وأضف مؤتمرًا واحدًا على الأقل.

أضف بعض التعليقات بدون صور. قم بوضع التاريخ يدوياً في الوقت الحالي؛ سوف نقوم بملئ خلية الـ createdAt تلقائياً في خطوة مُتقدمة.

تخصيص EasyAdmin

تعمل الواجهة الخلفية الافتراضية للمشرف بشكل جيد ، ولكن يمكن تخصيصها بعدة طرق لتحسين التجربة. دعونا نقوم ببعض التغييرات البسيطة لتوضيح الاحتمالات. استبدل التكوين الحالي بما يلي:

config/packages/easy_admin.yaml
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
easy_admin:
    site_name: Conference Guestbook

    design:
        menu:
            - { route: 'homepage', label: 'Back to the website', icon: 'home' }
            - { entity: 'Conference', label: 'Conferences', icon: 'map-marker' }
            - { entity: 'Comment', label: 'Comments', icon: 'comments' }

    entities:
        Conference:
            class: App\Entity\Conference

        Comment:
            class: App\Entity\Comment
            list:
                fields:
                    - author
                    - { property: 'email', type: 'email' }
                    - { property: 'createdAt', type: 'datetime' }
                sort: ['createdAt', 'ASC']
                filters: ['conference']
            edit:
                fields:
                    - { property: 'conference' }
                    - { property: 'createdAt', type: datetime, type_options: { attr: { readonly: true } } }
                    - 'author'
                    - { property: 'email', type: 'email' }
                    - text

لقد قمنا بتجاوز جزء الـتصميم لإضافة أيقونات الي عناصر القائمة وإضافة لينك link للصفحة الرئيسية الخاصة بالموقع.

لقسم التعليقات، إدراج الحقول يسمح لنا بترتيبهم بالطريقة التي نريدها. بعض الحقول تم تلويتها، مثل ضبط تاريخ الإنشاء ليكون للقراءة فقط. يحدد قسم المُرِشحات عوامل التصفية التي يجب عرضها فوق حقل البحث العادي.

هذه التخصيصات هي مجرد مقدمة صغيرة للإمكانيات التي يوفرها EasyAdmin.

العب مع المسؤول ، وقم بتصفية التعليقات حسب المؤتمر ، أو ابحث عن التعليقات عبر البريد الإلكتروني على سبيل المثال. المشكلة الوحيدة هي أنه يمكن لأي شخص الوصول إلى الواجهة الخلفية. لا تقلق ، سنقوم بتأمينه في خطوة مستقبلية.

1
$ symfony run psql -c "TRUNCATE conference RESTART IDENTITY CASCADE"

  • « Previous خطوة 8: وصف هيكل البيانات
  • Next » خطوة 10: إنشاء واجهة المستخدم

This work, including the code samples, is licensed under a Creative Commons BY-NC-SA 4.0 license.