2016-07-13 2 views
0

는 :
https://docs.typo3.org/typo3cms/ExtbaseFluidBook/8-Fluid/9-using-php-based-views.html
I 출력에 액션 JSON을 만들어보십시오.TYPO3 확장 PHP보기

public function listAction() 
{ 
    $storelocators = $this->storelocatorRepository->findAll(); 
    $this->view->assign('storelocators', $storelocators); 
} 

그리고 ext/my_storelocator/Classes/View/Storelocator에 내가 가진 클래스 List.php :

<? 

class Tx_MyStorelocator_View_Storelocator_List extends Tx_Extbase_MVC_View_AbstractView { 
     public function render() { 
       return 'Hello World'; 
     } 
} 

내가 할 모든이 : 그래서

Sorry, the requested view was not found. 

The technical reason is: No template was found. View could not be resolved for action "list" in class "My\MyStorelocator\Controller\StorelocatorController". 

나는 list 액션을 사용하여 일반 컨트롤러가 경로에 문제가 있다고 생각합니다. 또는 문제는 어디에 있습니까?

편집 : Extensioninfos

업체 : 내
키 my_storelocator
컨트롤러 : 모르겠 음 (필자는 extension_builder 함께 만든 그래서 난 내 컨트롤러 이름은 매장 검색 추측)
조치 : 목록

내 이해에서 Tx_MyStorelocator_View_Storelocator_List과 같은 클래스 이름이 정확해야합니다. 하지만 작동하지 않습니다.

답변

0

경로 구문이 유효하지 않을 수 있습니다. Classes/View/Storelocator/List.phprender() 함수를 쓰는 대신 Classes/Controller/StorelocatorController.php 파일에 listAction() 함수를 작성하십시오. Extension Builder는 일반적인 "목록, 작성, 편집 ..."및 이와 같은 조치로 집계 모델을 만든 경우이 파일을 작성해야합니다.

검토 A journey through the Blog Example 및 다음 장 첫 번째 확장자 만들기, 도움말.

문서와 Extension Builder에서 생성 된 PHP 코드 파일간에 불일치가 있음에 유의하십시오. Extbase 및 Fluid를 사용하여 TYPO3 Extension 개발에는 최신 부분이 있고 나머지 부분은 여전히 ​​이전 구문을 사용합니다.

+0

날짜가 맞지 않아 이것이 내 문제입니다. 다른 부분에는'listAction()'이있는 컨트롤러가 있습니다. 거기에 json을 출력하고 pageType을'disableAllHeaderCode'와 함께 사용할 수 있습니다. 그러나 템플리트가없는 경우 여전히 템플리트 및 가능한 html 주석/또는 오류를로드합니다. 어떻게 든 템플릿 (및 렌더링)을 비활성화 할 수 있습니까? – nbar

+1

listAction에 return 문을 추가하십시오. 여기 JSON 객체를 문자열로 반환 할 수 있습니다. TYPO3는 액션의 반환 데이터 유형을 평가하고 무효 인 경우 뷰를 렌더링하려고합니다. 그래서 그냥 빈 문자열을 반환하고 List.html 템플릿이 없기 때문에이 오류를 생성하는 view-> render 메서드는 호출되지 않습니다.) – Lasse

+0

여기에는 문제가 없습니다. 액션이 존재하지 않거나 실행되지 않으면 @nbar는이 오류 지점에 도달하지 않습니다. – j4k3

0

먼저 TYPO3에는 JSON 뷰가 내장되어 있습니다 (https://usetypo3.com/json-view.html). 렌더링 할 속성을 쉽게 정의 할 수 있습니다.

지적한 오류 메시지는 컨트롤러가 여전히 TemplateView를 가리키고 있음을 나타냅니다.

컨트롤러에서 렌더링 할보기를 지정할 수 있습니다.당신은 너무처럼 $ defaultViewObjectName 속성을 통해 기본보기를 설정할 수 있습니다 :

/** 
* @var string 
*/ 
protected $defaultViewObjectName = '\TYPO3\CMS\Fluid\View\TemplateView'; 

당신은 또한과 같이 초기화 액션 내부의 컨트롤러 내에서 설정할 수 있습니다 :

public function initializeExportPDFAction(){ 
    $this->defaultViewObjectName = 'Vendor\Extension\View\FileTransferView'; 
} 

(내가 가진, 그러나 , 아직 동작 내에서 템플릿을 정의하는 방법을 찾지 못했습니다, 코멘트의 모든 팁을 주시면 감사하겠습니다)

1

컨트롤러의 HTML보기를 위해 빈 파일을 만들어야합니다. Resources/Private/Template/Storelocator/List.html, HTML보기를 사용하지 않거나 콘텐츠를 직접 반환하는 경우 (완벽하게 괜찮음).

이유는 단순히 기술적 인 제한 때문입니다.

관련 문제