سؤال

وأنا باستخدام setFlash وhasFlash طرق ل symfony 1.4 مع المزج 2.0

ومحليا مع بلدي التطبيق frontend_dev، كل شيء بخير العمل. ولكن في بيئة الإنتاج، فشل اختباري $this->forward404Unless($user->hasFlash('resultsArray'));.

واعتقدت أن أساليب فلاش حيث تمكين افتراضيا. ما الذي يمكنني القيام به لجعله يعمل من فضلك؟

وتحرير: وجدت رسالة خطأ مثيرة للاهتمام

وهنا هو ملف filters.yml بلدي

# You can find more information about this file on the symfony website:
# http://www.symfony-project.org/reference/1_4/en/12-Filters

rendering: ~
security:  ~

# insert your own filters here

cache:     ~
flash:     ~
execution: ~

في لfrontend_prod.log، ولدي:

<اقتباس فقرة>   

و16 مارس 5:57:42 أن symfony [المعلومات] {} sfPatternRouting المباراة طريق "الصفحة الرئيسية" (/) ل/ مع المعلمات مجموعة ( 'الوحدة' => 'الرئيسي'، 'العمل' => 'مؤشر'،)
  16 مارس 5:57:42 أن symfony [يخطئ] ملف {} sfParseException تكوين "D: \ نوع من البط \ بن \ فب \ symfony ل\ symfony14 \ ليب / التكوين / التكوين / filters.yml" فئة يحدد "فلاش" مع مفتاح مفقود الفئة.

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

المحلول

هل استدعاء <م> executeShowResult العمل في إعادة توجيه / السياق إلى الأمام؟ فلاش لديه محدود مدى الحياة، وسوف تختفي بعد الطلب التالي للغاية. ومن الواضح أن <م> resultsArray تم القضاء عليهم.

نصائح أخرى

وأن يكون لديك 404 التي يتم توليدها في الإنتاج (فافيكون أو صورة) وأن التهم كما طلب إلى العمل 404 (بعد إعادة توجيه) التخلص من المتغيرات المحمول.

ولست متأكدا إذا كان هذا هو الجواب، ولكن ليس لدي مفتاح flash في ملفي filters.yml، في التطبيق في symfony 1.4.3، وأنا لم مست ذلك منذ الاستيلاء على نسخة من موقع symfony ل . هل حاولت إزالة هذا الخط من ملف yml، مسح ذاكرة التخزين المؤقت الخاصة بك ومحاولة مرة أخرى؟

وأنا أتساءل عما إذا كان لديك التخزين المؤقت تمكين همز؟

إذا قمت بذلك، والتخزين المؤقت with_layout (أو إذا فلاش في قالب العمل، ثم التخزين المؤقت الإجراءات ذات الصلة)، بعد ذلك سوف عادت الصفحة المخبأة دون رسالة فلاش على وجهات نظر لاحقة.

وتأكد لديك use_flash=true على factories.yml بك

user:
  class: myUser
  param:
    timeout:         3600
    logging:         %SF_LOGGING_ENABLED%
    use_flash:       true
    default_culture: %SF_DEFAULT_CULTURE%    

واستجابة قديمة جدا ولكن آمل أن يكون بعض فائدة لأحد آخر مع نفس المشكلة.

وLunohodov

و(عذرا لنشر إجابة بدلا من تعليق لكنني لا يمكن استخدام هذه الطريقة سببا في الحد حرفا)

وهنا هو العمل:

public function executeShowResult()
    {
        $user = $this->getUser();
        $this->forward404Unless($user->hasFlash('resultsArray'));

        $this->results = $user->getFlash('resultsArray');
        $user->setFlash('resultsArray', $this->results);

        $this->pager = new myArrayPager(null, 15);
        $this->pager->setResultArray($this->results);
        $this->pager->setPage($this->getRequestParameter('page'));
        $this->pager->init();

        $this->myModule = $this->getRequestParameter('myModule');
        $this->myTemplate = $this->getRequestParameter('myTemplate');

        $forwardPage = '../../'.$this->getRequestParameter('myModule').'/templates/'.$this->getRequestParameter('myTemplate');
        $this->setTemplate($forwardPage);

        return sfView::SUCCESS;

    }

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

$user = $this->getUser();
$user->setFlash('resultsArray', $this->results);
if ($user->hasFlash('resultsArray'))
{
    sfContext::getInstance()->getLogger()->info("The flash is set");
}
else
{
    sfContext::getInstance()->getLogger()->info("The flash is NOT set");
}

وسجلات لذلك:

<اقتباس فقرة>   

و16 مارس 6:07:13 أن symfony [معلومات] تم ضبط الفلاش

وأعتقد أنا في عداد المفقودين شيء كبير هنا ...

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