php - 如何在zend框架2或AjaxContext中使用ajax?

标签 php jquery request render zend-framework2

AjaxContext helper 是 ZF1 中的一个很棒的功能,我在很多地方都使用了它。

我想知道 ZF2 中是否提供此功能。

我做了一个测试并添加了:

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

在 Controller 中,添加了一个操作:

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

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

一个文件 input.ajax.phtml

和 ajax 调用:$.get('/form/input/format/html').css("display","block");

请求处理正常,返回 200代码,但我收到渲染错误

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

编辑2:

多亏了@Sam,我才成功让它发挥作用。这是我的步骤:

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>

谢谢

最佳答案

查看 JsonStrategy .

此外,如果您想要返回完整 View (除了布局),只需使用 $viewModel->setTerminal(true) 返回一个 ViewModel 即可。

关于php - 如何在zend框架2或AjaxContext中使用ajax?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13201361/

相关文章:

node.js - 在没有 bodyParser 的情况下从 AngularJS 请求 Node.js 中的数据

swift - Alamofire Swift 转换

php - 如何创建受密码保护的 pdf 文件

php - 是否可以将 num 行(整数)显示为十进制?

python - 写入文件时如何格式化JSON数据

javascript - 在单独层次结构的两个元素之间显示 <div>

jquery - 单击下拉列表时启用当前禁用的下拉列表

javascript - 防止双重表单提交不起作用

php - 自定义数据类型类

javascript - 获取矩形区域的 HTML