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

احتاج مساعدة ضمن مكتبة flags التي تقدمها لارافل

Osama Kha

السؤال

يوجد لدي مستخدمين الاول يقوم بالاضافة  والثاني يوافق ثم يعمم على الموقع احتاج الى مثال او موقع يساعدني في كيفية التعامل مع المكتبة او شرح قمت بتنزيل المكتبة ولكن احتاج مساعدة في كيفية التعامل معها وهل تعد هذه المكتبة خيار مناسب ام لا

رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 0

أظنك تقصد Laravel pennant فهي الحزمة التي توفرها لارافيل لدعم فكرة feature flags أو رايات الميزة أو تدعى أحيانا تبديلات الميزة feature toggls. وهي ببساطة طريقة لتضمين ميزات معينة ضمن التطبيق لمجموعة محددة من الجمهور دون الحاجة لتغييرها فعليا لكامل جمهور التطبيق. مثال: 

  • تريد نشر تصميم معين للتطبيق وتريد من فئة معينة فقط اختباره وتجربته.

تكون هاته الفكرية عملية في التطبيقات التي تتوقع توسعا كبيرا، أين يتم التوسع في الميزات تدريجيا .. خصوصا في التطبيقات التي تنتهج فلسفات Agile لتقديم نسخ مصغرة MVPs من الميزات التي تنشرها تباعا .. أين يتم نشر النموذج الأولي من الميزة لمجموعة معينة ضمن الجمهور المستهدف، ثم بعد اختبار تجارب الاستخدام او الحصول على التقييمات والآراء feedback يتم نشر وتعميم هاته الميزة بشكل نهائي. 

مثال جيد آخر هو ما تستعمله المواقع الكبيرة من مثل فيسبوك، فحينما تقوم -مثلا- بنشر طريقة تفاعل جديدة تقوم بتقديمها لجمهور معين ثم تقوم بعد ذلك بالتوسع في نشرها. 

في لارافيل، توجد هاته الحزمة لتقدم حلا استثنائيا بميزات عدة لمقاربة هاته الفكرة والتحكم فيها.

بالنسبة لتطبيقك، فسيمكن نعم دعم هاته الفكرة بغض النظر عما تكونه هاته الميزات، سيمكن لصنف المستخدم الأول نشر وانشاء الميزات وللثاني تعميمها على كامل أصناف مستخدمي التطبيق.

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

مكتبة flags خيارًا مناسبًا لتطبيقك. فهي توفر لك طريقة سهلة لإدارة الإصدارات المختلفة من الميزات في تطبيقك ويمكنك أيضًا استخدام مكتبة flags لإنشاء قواعد معقدة لتحديد ما إذا كانت الميزة نشطة أم لا. على سبيل المثال، يمكنك إنشاء قاعدة تسمح للميزة بالتنشيط فقط للمستخدمين الذين يعيشون في منطقة معينة.

سوف اعطيك مثال علي استخدم هذه المكتبة الرائعة,

اذا كان لديك تطبيق يحتوي على ميزة جديدة تسمح للمستخدمين بإنشاء مدونات. تريد أن تكون الميزة متاحة للمستخدمين المميزين فقط.

يمكنك استخدام مكتبة flags لإنشاء ميزة جديدة تسمى blog-feature-flag. يمكنك تعيين القيمة الافتراضية للميزة إلى false حتى لا تكون متاحة للمستخدمين العاديين.

يمكنك بعد ذلك استخدام طريقة is_active() للتحقق مما إذا كانت الميزة نشطة للمستخدم الحالي. إذا كانت الميزة نشطة، فيمكنك السماح للمستخدم بإنشاء مدونة.

كود التنفيذ:-

class User
{
    public function is_admin()
    {
        return $this->role === 'admin';
    }
}

class BlogFeatureFlag extends Flag
{
    /**
     * القيمة الافتراضية للميزة.
     *
     */
    protected $default = false;

    /**
     * اسم الميزة.
     */
    protected $name = 'blog-feature-flag';

    /**
     * وصف الميزة.
     */
    protected $description = 'هذه هي ميزة مدونة جديدة';
}

class BlogController
{
    public function create()
    {
        $user = Auth::user();

        if ($user->is_admin() || $flag->is_active()) {
            // السماح للمستخدم بإنشاء مدونة
        } else {
            // رفض إنشاء مدونة
        }
    }
}

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

مكتبة Laravel pennant هي مكتبة جيدة لإنشاء أنظمة الموافقة والمراجعة، وهي مناسبة لتطبيقك حيث يوجد مستخدمين يقومون بإضافة محتوى جديد، ثم يقوم مستخدم آخر بالموافقة عليه قبل نشره على الموقع.

وأولاً تحتاج إلى تثبيت المكتبة عن طريق الأمر التالي:

composer require laravel/pennant

ثم نشر الإعدادات وملفات التهجير عن طريق الأمر التالي:

php artisan vendor:publish --provider="Laravel\Pennant\PennantServiceProvider"

ثم عليك تنفيذ الأمر:

php artisan migrate

ولإنشاء علامة بنانت جديدة، استخدم دالة create() في نموذج Pennant، وكمثال لإنشاء علامة بنانت للموافقة على محتوى جديد، استخدم الكود التالي:

use App\Models\Content;
use App\Models\User;
use Laravel\Pennant\Models\Pennant;

class ContentForm extends Form
{
    public function buildForm()
    {
        $this
            ->add('title', TextType::class)
            ->add('body', TextareaType::class)
            ->add('author', UserType::class)
            ->add('submit', SubmitType::class);
    }

    public function handleSubmit()
    {
        $content = Content::create($this->getData());

        $pennant = Pennant::create([
            'content_id' => $content->id,
            'status' => 'pending',
        ]);

        return redirect()->route('contents.index');
    }
}

يتم إنشاء علامة بنانت جديدة مع حالة "معلقة" وتحتوي العلامة البنانت على معرف المحتوى الذي سيتم الموافقة عليه.

لمراجعة العلامة البنانت، استخدم دالة review() في نموذج Pennant، ومثلاً لمراجعة علامة بنانت للموافقة على محتوى جديد،  سيكون الكود كالتالي:

use App\Models\Content;
use App\Models\User;
use Laravel\Pennant\Models\Pennant;

class ContentController extends Controller
{
    public function approve(Pennant $pennant)
    {
        $pennant->review();

        $content = Content::find($pennant->content_id);
        $content->publish();

        return redirect()->route('contents.index');
    }
}

وستجد هنا شرح وافي في المستند الرسمي:

رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...