문제

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 () 메소드는 주소 데이터를 가져 오기에 따라 주소 모델의 메소드 여야하지만 주소 데이터를 처리하고 있지만 False를 반환하고 세션 호출을 포함하지 않아야합니다.

function generateMapUrl($id = null) {
  $this->recursive = -1;
  if (!$this->read(null, $id)) {
    return false;
  } 
  $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;
}

그런 다음 모든 컨트롤러에서 전화를 걸어 세션 호출을 사용할 수 있습니다.

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

다른 팁

컨트롤러에는 세션 데이터가 있습니다. 모델은 어떤 세션 상태도 인식해서는 안됩니다.

주소 mapurlGenerator 클래스를 작성하고 URL을 생성하는 데 사용하는 것을 고려할 수 있습니다. 주소를 전달할 수 있습니다. 이렇게하면 URL이나지도에 대한 걱정으로 모델을 혼란스럽게하지 않을 것이며, 하나 이상의 컨트롤러에 동일한 기능이 퍼지는 것에 대한 걱정은 없습니다.

모델에서 Googleaddress 클래스를 빌드하십시오. 그런 다음 컨트롤러에서 Googleaddress를 사용하십시오.

최소한 세 가지 일이 있습니다.

1) URL 생성 2) 오류 처리 3) 명시 적은 아니지만 실제 호출.

URL 작성은 전용 도우미 클래스에 의해 처리되어야합니다. 컨트롤러에서 수표를 수행하는 것이 가장 좋을 것입니다. 실제 확인 코드는 다른 곳에 상주 할 것입니다. 오류 처리는 컨트롤러에 있어야합니다. 사용자가있는 특정 장소에 특별한 작업을 수행해야하므로 오류가 있어야합니다. 마지막으로, 호출 자체는 물론 컨트롤러에서 이루어져야합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top