أين يجب أن أضع هذا الأسلوب في الموقع مدفوعة للكيك؟

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

  •  03-07-2019
  •  | 
  •  

سؤال

وأنا أكتب تطبيق استخدامك ل CakePHP وأنا متأكد ما حيث ينبغي أن يكون وضع مهمتي generateMapUrl.

function generateMapUrl($id = null) {
    if ( !$id ) {
        $this->Session->setFlash('Invalid Property Id');
    } 
    $this->read(null, $id);
    $url = "http://maps.google.com/maps?oi=map&q=";
    $url .= $this->data['street_num'] . '+';
    $url .= $this->data['street'] . '+';
    $url .= $this->data['city'] . '+';
    $url .= $this->data['province'] . '+';
    $url .= $this->data['country'] . '+';
    $url .= $this->data['postal_code'];

    return $url;
}

ولدي البنية التالية:

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

والحجز (نموذج والمراقب المالي)
  العقارات (نموذج والمراقب المالي)
  عنوان (نموذج والمراقب المالي)

وحجز hasOne الملكية وعنوان hasOne الملكية. وأود أن تكون قادرة على استدعاء generateMapUrl عن أي عنوان. أنا غير متأكد إلى أين وضعت طريقة على الرغم من ... تحكم عنوان؟ معالجة نموذج؟ (ملاحظة: أدعو هذه الطريقة من وحدة تحكم حجوزات)

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

المحلول

ويجب أن تكون طريقة generateMapUrl () أسلوب في نموذج العناوين كما هو التعامل مع البيانات جلب والتنسيق عنوان، ولكن يجب أن تعود كاذبة ولا يحتوي على المكالمات الدورة:

function generateMapUrl($id = null) {
  $this->recursive = -1;
  if (!$this->read(null, $id)) {
    return false;
  } 
  $url = "http://maps.google.com/maps?oi=map&amp;q=";
  $url .= $this->data['street_num'] . '+';
  $url .= $this->data['street'] . '+';
  $url .= $this->data['city'] . '+';
  $url .= $this->data['province'] . '+';
  $url .= $this->data['country'] . '+';
  $url .= $this->data['postal_code'];  
  return $url;
}

ويمكنك ثم استدعاء هذا من أية وحدة تحكم واستخدام المكالمات جلسة هناك:

function x() {
  if (!$mapUrl = ClassRegistry::init('Address')->generateMapUrl($addressId)) {
    $this->Session->setFlash('Invalid Property Id');
  }
}

نصائح أخرى

في وحدة تحكم، لديها بيانات الدورة. نموذج يجب أن لا يكون على بينة من أي حالات جلسة.

وأنا قد تنظر في خلق فئة AddressMapUrlGenerator واستخدامه لإنشاء URL. هل يمكن أن تمر عليه عنوان. وبهذه الطريقة، فلن تكون خيبة نموذج مع المخاوف بشأن عناوين المواقع أو الخرائط، وسوف لا يكون لديك مخاوف مستقبلية حول وجود نفس الوظيفة انتشرت في وحدة تحكم أكثر من واحد.

في نموذج بناء الدرجة GoogleAddress. ثم استخدم GoogleAddress في وحدة تحكم.

وعلى أقل تقدير، وهناك ثلاثة أشياء تحدث:

1) إنشاء وURL 2) التعامل مع خطأ 3) وعلى الرغم من عدم وضوحا، والدعوة الفعلية.

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

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