طريقة الاستعلام ، إعادة التوجيه إلى صفحة مخصصة

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

  •  14-11-2019
  •  | 
  •  

سؤال

مرحبا!يمكنني استخدام سيمفوني 1.4.11.في إعلان جميع المستخدمين الخاص بمشروعي ، لا يتوفر على الموقع إلا عندما يكون لمالكه حساب مميز.المشكلة هي أن جميع الإعلانات متوفرة على المباشر links...So يمكنني استخدام قرار هذه المشكلة من يوم 6 من جوببيت.التوجيه:

ads_show_user:
  url:     /:sf_culture/ads/:slug
  class:   sfDoctrineRoute
  options: { model: Ads, type: object,  method_for_query: retrievePayAd }
  param:   { module: ads, action: show }
  requirements:
    sf_method: [get]
    sf_culture: (?:de|en|ru)

نموذج:

public function retrievePayAd(Doctrine_Query $q)
  {
    $q ->leftJoin('a.Owner o')
      ->leftJoin('o.Profile p')
      ->andWhere('p.payed_until > NOW()')
      ->andWhere('a.active = ?',1)
      ->andWhere('a.expires_at > NOW()');

    return $q->fetchOne();
  }

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

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

المحلول

نعم ، هذا ممكن.

قم بتعديل مسارك للسماح بإرجاع الكائنات الفارغة:

ads_show_user:
  ...
  options: { allow_empty: true ... }

الآن ، في عملك ، عندما تتصل $this->getRoute()->getObject(), ، لن 404 إذا لم يتم العثور على كائن.يمكنك بعد ذلك التعامل مع هذه الحالة (أو الحالات) ، كيفما تشاء.

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