2012-11-02 3 views
1

AjaxContext 헬퍼는 ZF1에서 깔끔한 기능이었고 여러 곳에서 사용되었습니다.zend framework 2 또는 AjaxContext에서 ajax를 사용하는 방법은 무엇입니까?

이것이 ZF2에서 사용 가능한지 궁금합니다.

나는 테스트를하고 추가 :

public function init() 
{ 
    $ajaxContext = $this->_helper->getHelper('AjaxContext'); 
    $ajaxContext->addActionContext('input', 'html') 
       ->addActionContext('number', 'html') 
       ->initContext(); 
} 

를 컨트롤러에하는 액션 추가 :

public function inputAction() 
{ 
    $form = new AddInput(); 

    return ['form' => $form]; 
} 

파일 input.ajax.phtml

와 아약스 전화 : $.get('/form/input/format/html').css("display","block");

을 요청은 확인을 통해 진행되며,085,513,210 코드,하지만 난이 오류를

Fatal error: Uncaught exception 'Zend\View\Exception\RuntimeException' with message 'Zend\View\Renderer\PhpRenderer::render: Unable to render template "form/index/input"; resolver could not resolve to a file' in C:\xampp\htdocs\Zend-Project\vendor\zendframework\zendframework\library\Zend\View\Renderer\PhpRenderer.php on line 454 

(!) Zend\View\Exception\RuntimeException: Zend\View\Renderer\PhpRenderer::render: Unable to render template "form/index/input"; resolver could not resolve to a file in C:\xampp\htdocs\Zend-Project\vendor\zendframework\zendframework\library\Zend\View\Renderer\PhpRenderer.php on line 454 

# Time Memory Function Location 
1 0.0003 139048 {main}() ..\index.php:0 
2 0.0969 4288136 Zend\Mvc\Application->run() ..\index.php:12 
3 0.1463 6125720 Zend\Mvc\Application->completeRequest() ..\Application.php:310 
4 0.1463 6125832 Zend\EventManager\EventManager->trigger() ..\Application.php:326 
5 0.1463 6125904 Zend\EventManager\EventManager->triggerListeners() ..\EventManager.php:208 
6 0.1464 6127112 call_user_func () ..\EventManager.php:468 
7 0.1464 6127128 Zend\Mvc\View\Http\DefaultRenderingStrategy->render() ..\EventManager.php:468 
8 0.1464 6127176 Zend\View\View->render() ..\DefaultRenderingStrategy.php:128 
9 0.1465 6128304 Zend\View\View->renderChildren() ..\View.php:196 
10 0.1465 6128936 Zend\View\View->render() ..\View.php:231 
11 0.1466 6129560 Zend\View\Renderer\PhpRenderer->render() ..\View.php:203 

어떤 무엇이 잘못되었는지 아이디어, 아니면 대안을 렌더링거야? 감사.

편집 :

나는 DefaultRenderingStrategy 사용하여이 작업을 수행하는 경우 : 내가 그것을 덕분에 작동하도록 관리

:

public function inputAction() 
{ 
    $result = new ViewModel(array('some_parameter' => 'some value',)); 
    $result->setTerminal(true); 
    return $result; 
} 

var_dump($this->result); 내가 null

EDIT2거야 @ 샘. 여기 내 단계는 다음과 같습니다

javascript

$.get('/form/input', { name: "John", time: "2pm" }).done(function(data) { 
    $('#some_div').append(data); 
}); 

controller

public function inputAction() 
{ 
    $request = $this->getRequest(); 
    $results = $request->getQuery(); // this is the get string 

    $result = new ViewModel(['result' => $results]); 
    $result->setTerminal(true); 

    return $result; 
} 

view

<?php 
echo '<div>'.$this->result->name.'</div>'; 

결과가 될 것입니다 <div>John</div>

감사합니다.

답변

3

JsonStrategy을 확인하십시오.

전체보기 (분리 된 레이아웃)가 반환되도록하려면 $viewModel->setTerminal(true) 인 ViewModel 만 반환하면됩니다.

+0

html로 보낼 수 있는지 궁금해합니다. – Patrioticcow

+0

HTML을 보내려면 기본 렌더링 전략 (예 : 텍스트/HTML 허용)을 사용하고'$ vm-> setTerminal (true)' – Sam

+0

나는 그것을 알아낼 것이라고 생각한다. 감사 – Patrioticcow

관련 문제