قم بإضافة عنصر تحكم الرفض إلى مخرجات session-flash() في CakePHP

StackOverflow https://stackoverflow.com/questions/128011

  •  02-07-2019
  •  | 
  •  

سؤال

في CakePHP 1.2 التطبيق الذي أستخدمه

<?php $session->flash();?>

لإخراج رسائل مثل "تم تحرير السجل".إنها تعمل بشكل رائع.

ومع ذلك، أريد إضافة رابط يسمى "تجاهل" والذي سيؤدي إلى إخفاء الرسالة.أعرف كيفية إنشاء الرابط، لكني لا أعرف كيفية إدراجه في مخرجات رسالة الفلاش.

تلتف رسالة الفلاش في ملف DIV tag.أريد إدراج رمز الرفض الخاص بي في هذا القسم، لكني لا أعرف كيف.

هل كانت مفيدة؟

المحلول 3

استنتجت هذا:قم بإنشاء تخطيط جديد في مجلد التخطيطات الخاص بك:

layouts/message.ctp

في هذا التخطيط، قم بتضمين الاستدعاء لإخراج المحتوى:

<?php echo $content_for_layout; ?>

وبعد ذلك، عندما تقوم بتعيين رسالة الفلاش، حدد التخطيط الذي تريد استخدامه:

$this->Session->setFlash('Your record has been created! Wicked!','message');

نصائح أخرى

تريد استخدام setflash وظيفة.إذا قمت بتمرير setflash سلسلة فارغة لـ $default فلن يتم تغليف رسالتك في div وسيتم تخزينها كما هي.بهذه الطريقة يمكنك عرض أي علامة تريدها أو كما نشر جاستن، يمكنك استخدام صفحة عرض أخرى لرسالتك حتى لا تخلط بين طريقة العرض ووحدات التحكم الخاصة بك.

يمكنك تحقيق ذلك باستخدام jQuery:

$(document).ready(function() {

    $("#flashMessage").each(function() {
        $close = $("<span class='close'>Close</span>");
        $close.click(function () {
            $(this).parent().hide("slow");
        });
        $(this).append($close);
    });

});

ستحتاج إلى تحسين الأمر باستخدام القليل من CSS، لكنني متأكد من أنك فهمت الفكرة.

الطريقة الافتراضية للقيام بذلك هي إنشاء ملف flash.ctp في /app/views/layouts الخاص بك.سيؤدي هذا إلى تجاوز ملف flash.ctp الافتراضي الذي يمكنك العثور عليه في /cake/libs/view/layouts.لذلك لا تحتاج إلى استخدام المعلمة الإضافية.

بالمناسبة:يعمل هذا مع جميع طرق العرض والتخطيطات القياسية لـ CakePHP.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top