2013-08-01 2 views
0

여기 내 문제입니다. JSON 작업에 데이터를 보내려는 양식이 있습니다. 그러나 내가하는 일과 상관없이 그 일은 실행되지 않을 것입니다. 실행 컨트롤러를 방지해야한다 아무것도 최대한 멀리 볼 수Joomla 2.5 사이트 작업이 실행되지 않습니다

Invalid controller: name='controls', format='json'

: 난 그냥 다음과 같은 오류가 발생합니다. 여기에 코드가 있습니다.

class HelloWorldControllerControls extends JController{ 
    /*function __construct(){ 
     parent::__construct(); 
    }*/ 
    public function postal(){ 
     JFactory::getDocument()->setMimeEncoding('application/json'); 
     JResponse::setHeader('Content-Disposition','attachment;filename="status.json"'); 
     //$postal = JRequest::getVar('postal_code',false); 
     //$dispatcher = JDispatcher::getInstance(); 
     //$saveLocalCookie = $dispatcher->trigger('onSavePostalCode', array('code'=>$postal)); 
     echo json_encode(array('success'=>true)); 
     jexit(); 
    } 
} 

사이트 controllers 폴더에 물론이고, 나는 거의 똑같은 일을 관리자 패널에 사용하고 다른 컨트롤러와 함께이 일치 한

controls.json.php 이름,하지만 작동 관리자가 아니라 사이트에 있습니다.

이 전화를 시도하는 데 사용하는 JRoute입니다. 내가 내려다 보이는 할 수있다

index.php?option=com_helloworld&task=controls.postal&format=json

아무것도?

편집 :

는 내가 JSON 형식으로 원시 데이터를 출력하고 일을 할 모든으로, 뷰에 대한 필요성의 컨트롤러를 단 모델이없는, 직접 작업을 호출 할 필요가 명확합니다. 현재 테스트 중이므로 아직 모델이 필요하지 않습니다.

편집 2 :

답변의 일부를 발견하지만이 대답은 정말 큰 아니므로 열려 떠나려고하고있다. Joomla가 "사이트"부분에 MVC를 설정하는 방법 (내 테스트를 기반으로)에 근거하여 불가능합니다. 항상 먼저 뷰를 찾은 다음 컨트롤러를 찾습니다. 보기가 설정되었는지 확인하여 작업을 수행 할 수있었습니다. MVC를 올바로 구축하지 못하는 오픈 소스 프레임 워크가 비논리적 인 것처럼 보이기 때문에 테스트에서 오해되거나 잘못 될 가능성이 있습니다.

이 문제를 해결하려면 "보기"를 "컨트롤러"로 사용해야합니다.

+0

이것은 도움이 될 수 있습니다. http://forum.joomla.org/viewtopic.php?p=2282503 –

+0

그러나 같은 문제는 아닌 것으로 보입니다. 나는 명확하게 질문을 업데이 트됩니다, 감사합니다. –

+0

당신은 환영합니다. 그러나 나는 더 이상의 도움이 될 것 같지 않습니다. Google에서 당신을 위해 무엇을 찾을 수 있을지 생각했습니다.행운을 빌어 요 조던, 환호. –

답변

0

컨트롤러 파일 이름은 출력이 원시, 이름 인 경우 controls.php

또는

은 어쩌면 controls.raw.php하고 마지막에 &format=raw를 추가해야합니다.

+0

.json 부분을 제거하려고했지만 아직 .raw를 시도하지 않았습니다. WSIR - 아무런 변화도없는 같은 오류. –

+0

또한 끝에 & format = raw를 추가하십시오. –

+0

'잘못된 컨트롤러 : name = 'controls', format = 'raw'같은 것은 약간 다른 오류입니다. –

0

이전 mvc를 사용할지 여부를 결정해야합니다. 새로운 기능은 REST에 훨씬 좋습니다.

JControllerLegacy와 달리 JController를 확장하는 경우 새 MVC를 사용하고 있습니다. 당신은 REST 라우팅 및 그와 관련된 다른 것들을 사용해야합니다.

새로운 MVC에는 컨트롤러 디자인마다 하나의 작업이 있습니다. 예 : 표시 (가져 오기), 만들기 (게시), 업데이트, 삭제 등의 작업을 수행 할 수 있습니다.

우편은 동사가 아니기 때문에 업무로 이해하지 못합니다.

+0

"우편"은 쿠키/세션에서 사용자 우편 번호를 기록하기 위해 작성된 "우편 번호"의 단순한 버전입니다. 하지만 혼란 스럽습니다. 대신 레거시를 사용 하시겠습니까? –

+0

레거시 MVC를 사용하고있는 것처럼 보이므로 JControllerLegacy를 JController로 확장해야합니다. 예를 들어 핵심 CMS의 모든 확장을 확인하십시오. – Elin

+0

@Elin : 그는 Joomla 2.5를 사용하고있어 새로운 MVC가 없으므로 기존 접미사를 추가 할 필요가 없다고 말합니다. 맞습니까? – mattosmat