Zend framework2 安装和创建demo的第一个服务后出现Apigility错误

Zend framework2 安装和创建demo的第一个服务后出现Apigility错误,zend-framework2,laminas-api-tools,Zend Framework2,Laminas Api Tools,我刚刚安装了Apigility,根据教程,我有一个错误。当我试着让邮递员给我的服务打电话时,我遇到了这样一个错误 Zend\View\Renderer\PhpRenderer::render:无法呈现模板“status/v1/rpc/ping/ping/ping”;解析程序无法解析为文件 我打电话给邮递员是这样的。 如何解决此问题?对于任何有此问题的人,在Apigility示例中,更改以下示例代码: namespace Status\V1\Rpc\Ping; use Zend\Mvc\Cont

我刚刚安装了Apigility,根据教程,我有一个错误。当我试着让邮递员给我的服务打电话时,我遇到了这样一个错误

Zend\View\Renderer\PhpRenderer::render:无法呈现模板“status/v1/rpc/ping/ping/ping”;解析程序无法解析为文件

我打电话给邮递员是这样的。


如何解决此问题?

对于任何有此问题的人,在Apigility示例中,更改以下示例代码:

namespace Status\V1\Rpc\Ping;
use Zend\Mvc\Controller\AbstractActionController;
use ZF\ContentNegotiation\ViewModel;

class PingController extends AbstractActionController
{
public function pingAction()
{
    return new ViewModel([
        'ack' => time()
    ]);
}
}
对此

namespace Status\V1\Rpc\Ping;

use Zend\Mvc\Controller\AbstractActionController;

class PingController extends AbstractActionController
{
public function pingAction()
{

return ['ack' => time()];

}
}

做这个例子很好。

Apigility作为Zend框架的一部分现在是开源的Laminas项目的一部分,被称为Laminas API工具

在尝试创建API服务之前,请确保在PHP配置中禁用Zend OPcache

验证的快速步骤:

  • 创建一个phpconfig.php文件,用于显示开发服务器的php配置。不要把它投入生产。有关详细信息,请参阅
  • 在服务器上打开此文件http://localhost:8080/phpconfig.php 查找两件事a)ZendOPcache-如果启用了它,则查看b)加载的php.ini,类似于/etc/php7/cli/php.ini
  • 将opcache.enable=0添加到[opcache]部分。即使它被注释掉了,它仍然被加载,你看到它在右上方了吗
  • 重新启动PHP服务器/应用程序,以验证Zend OPcache是否已关闭,仅此而已

  • 太好了。。。有什么问题吗?很明显,有些东西没有呈现出来。但是,配置是什么?路线是什么?为什么在URL中使用
    public/
    ?您是否调试了代码,是否执行了控制器?您的响应是什么,呈现视图还是JSON(当您使用Apigility时,我假设是JsonResponse),您是否从ZF提供的正确控制器扩展了控制器?请阅读,以便我们能够适当地帮助您。我只是简单地遵循Apigility的入门指南。我什么都不做。我在xampp下运行它,右键创建Api和字段。如果我在请求中设置了错误的内容,你会有“错误”响应。那么,如果你转到你的本地地址,你会看到管理面板吗?你用它来创建你的新“ping”了吗?询问,因为如果您遵循那里的示例,那么模块名将是“Status”,而不是“ping”(尽管服务是ping)。您是否创建了控制器和操作?请在您的问题中添加所有这些信息。请求和响应也是如此(使用Postman控制台进行响应)。是的,我看到了面板,并创建了元素作为示例。最后,我找到了解决方案的一部分。如果我在返回时不使用ViewModel,而是简单地返回结果,那么它是有效的。产生错误的ViewModel构造也是如此。也许这个例子不太清楚。我必须创建控件和操作来处理示例。我错误地认为这个例子很好:)。所以问题解决了