您好,当我尝试访问 Zend Framework 2.2.2 项目中的 RESTful Web 服务端点时出现错误。我正在创建一个名为 V1 的模块,但收到以下错误:
Zend\View\Renderer\PhpRenderer::render:无法呈现模板“v1/collateral/get-list”;解析器无法解析为文件
我假设这表明应用程序找不到所需的 View 文件。我从 this tutorial 开始.我已经搜索了我的问题的答案,我发现其他一些人也有类似的问题,但我目前还没有找到我正在寻找的答案,因为我仍然遇到错误。我对 Zend Framework 2 比较陌生,所以对于更有经验的人来说这可能是一个简单的过程。
这是迄今为止我在路由和 View 管理器策略方面所做的工作:
module.config.php:
return array(
'router' => array(
'routes' => array(
'collateral' => array(
'type' => 'segment',
'options' => array(
'route' => '/v1/collateral[/:id]',
'constraints' => array(
'id' => '[0-9]+',
),
'defaults' => array(
'controller' => 'V1\Controller\Collateral',
),
),
),
),
),
'controllers' => array(
'invokables' => array(
'V1\Controller\Collateral' => 'V1\Controller\CollateralController',
),
),
'view_manager' => array(
'strategies' => array(
'ViewJsonStrategy',
),
),
);
这是我的 Controller 代码
CollateralController.php
namespace V1\Controller;
use Zend\Mvc\Controller\AbstractRestfulController;
use V1\Model\Collateral;
//use V1\Form\CollateralForm;
use V1\Model\CollateralTable;
use Zend\View\Model\JsonModel;
class CollateralController extends AbstractRestfulController
{
protected $collateralTable;
public function getList()
{
$results = $this->getCollateralTable()->fetchAll();
$data = array();
foreach($results as $result) {
$data[] = $result;
}
return array('data' => $data);
}
public function get($id)
{
# code...
}
/*public function create($data)
{
# code...
}
public function update($id, $data)
{
# code...
}
public function delete($id)
{
# code...
}*/
public function getCollateralTable()
{
if (!$this->collateralTable) {
$sm = $this->getServiceLocator();
$this->collateralTable = $sm->get('V1\Model\CollateralTable');
}
return $this->collateralTable;
}
}
这里是我的 Module.php 文件
namespace V1;
// Add these import statements:
use V1\Model\Collateral;
use V1\Model\CollateralTable;
use Zend\Db\ResultSet\ResultSet;
use Zend\Db\TableGateway\TableGateway;
class Module
{
public function getAutoloaderConfig()
{
return array(
'Zend\Loader\ClassMapAutoloader' => array(
__DIR__ . '/autoload_classmap.php',
),
'Zend\Loader\StandardAutoloader' => array(
'namespaces' => array(
__NAMESPACE__ => __DIR__ . '/src/' . __NAMESPACE__,
),
),
);
}
public function getConfig()
{
return include __DIR__ . '/config/module.config.php';
}
public function getServiceConfig()
{
return array(
'factories' => array(
'V1\Model\CollateralTable' => function($sm) {
$tableGateway = $sm->get('CollateralTableGateway');
$table = new CollateralTable($tableGateway);
return $table;
},
'CollateralTableGateway' => function ($sm) {
$dbAdapter = $sm->get('Zend\Db\Adapter\Adapter');
$resultSetPrototype = new ResultSet();
$resultSetPrototype->setArrayObjectPrototype(new Collateral());
return new TableGateway('collateral', $dbAdapter, null, $resultSetPrototype);
},
),
);
}
}
尽管根据我在教程中阅读的内容我不确定是否需要它,但我创建了以下空 View 文件:
\module\V1\view\v1\collateral\get-list.phtml
我想知道是否需要此 View 文件,它是否位于正确的位置并正确命名?
对于此错误的任何其他帮助将不胜感激。如果有帮助,我很乐意提供更多信息。
谢谢。
最佳答案
“渲染错误”是因为找不到您的 View 模板,您是对的,但好消息是您不一定需要:
假设您的 restful 服务正在返回 JSON,请在 Controller 操作的底部试试这个:
$result = new \Zend\View\Model\JsonModel($data_you_were_already_returning);
return $result;
关于php - ZEND Framework 2 RESTful Web 服务模板错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18880988/
我正在尝试使用ruby和Savon来使用网络服务。测试服务为http://www.webservicex.net/WS/WSDetails.aspx?WSID=9&CATID=2require'rubygems'require'savon'client=Savon::Client.new"http://www.webservicex.net/stockquote.asmx?WSDL"client.get_quotedo|soap|soap.body={:symbol=>"AAPL"}end返回SOAP异常。检查soap信封,在我看来soap请求没有正确的命名空间。任何人都可以建议我
我想安装一个带有一些身份验证的私有(private)Rubygem服务器。我希望能够使用公共(public)Ubuntu服务器托管内部gem。我读到了http://docs.rubygems.org/read/chapter/18.但是那个没有身份验证-如我所见。然后我读到了https://github.com/cwninja/geminabox.但是当我使用基本身份验证(他们在他们的Wiki中有)时,它会提示从我的服务器获取源。所以。如何制作带有身份验证的私有(private)Rubygem服务器?这是不可能的吗?谢谢。编辑:Geminabox问题。我尝试“捆绑”以安装新的gem..
我正在使用puppet为ruby程序提供一组常量。我需要提供一组主机名,我的程序将对其进行迭代。在我之前使用的bash脚本中,我只是将它作为一个puppet变量hosts=>"host1,host2"我将其提供给bash脚本作为HOSTS=显然这对ruby不太适用——我需要它的格式hosts=["host1","host2"]自从phosts和putsmy_array.inspect提供输出["host1","host2"]我希望使用其中之一。不幸的是,我终其一生都无法弄清楚如何让它发挥作用。我尝试了以下各项:我发现某处他们指出我需要在函数调用前放置“function_”……这
最近,当我启动我的Rails服务器时,我收到了一长串警告。虽然它不影响我的应用程序,但我想知道如何解决这些警告。我的估计是imagemagick以某种方式被调用了两次?当我在警告前后检查我的git日志时。我想知道如何解决这个问题。-bcrypt-ruby(3.1.2)-better_errors(1.0.1)+bcrypt(3.1.7)+bcrypt-ruby(3.1.5)-bcrypt(>=3.1.3)+better_errors(1.1.0)bcrypt和imagemagick有关系吗?/Users/rbchris/.rbenv/versions/2.0.0-p247/lib/ru
在Rails4.0.2中,我使用s3_direct_upload和aws-sdkgems直接为s3存储桶上传文件。在开发环境中它工作正常,但在生产环境中它会抛出如下错误,ActionView::Template::Error(noimplicitconversionofnilintoString)在View中,create_cv_url,:id=>"s3_uploader",:key=>"cv_uploads/{unique_id}/${filename}",:key_starts_with=>"cv_uploads/",:callback_param=>"cv[direct_uplo
我想在Ruby中创建一个用于开发目的的极其简单的Web服务器(不,不想使用现成的解决方案)。代码如下:#!/usr/bin/rubyrequire'socket'server=TCPServer.new('127.0.0.1',8080)whileconnection=server.acceptheaders=[]length=0whileline=connection.getsheaders想法是从命令行运行这个脚本,提供另一个脚本,它将在其标准输入上获取请求,并在其标准输出上返回完整的响应。到目前为止一切顺利,但事实证明这真的很脆弱,因为它在第二个请求上中断并出现错误:/usr/b
您如何在Rails中的实时服务器上进行有效调试,无论是在测试版/生产服务器上?我试过直接在服务器上修改文件,然后重启应用,但是修改好像没有生效,或者需要很长时间(缓存?)我也试过在本地做“脚本/服务器生产”,但是那很慢另一种选择是编码和部署,但效率很低。有人对他们如何有效地做到这一点有任何见解吗? 最佳答案 我会回答你的问题,即使我不同意这种热修补服务器代码的方式:)首先,你真的确定你已经重启了服务器吗?您可以通过跟踪日志文件来检查它。您更改的代码显示的View可能会被缓存。缓存页面位于tmp/cache文件夹下。您可以尝试手动删除
我正在使用Mandrill的RubyAPIGem并使用以下简单的测试模板:testastic按照Heroku指南中的示例,我有以下Ruby代码:require'mandrill'm=Mandrill::API.newrendered=m.templates.render'test-template',[{:header=>'someheadertext',:main_section=>'Themaincontentblock',:footer=>'asdf'}]mail(:to=>"JaysonLane",:subject=>"TestEmail")do|format|format.h
所以这可能有点令人困惑,但请耐心等待。简而言之,我想遍历具有特定键值的所有属性,然后如果值不为空,则将它们插入到模板中。这是我的代码:属性:#===DefaultfileConfigurations#default['elasticsearch']['default']['ES_USER']=''default['elasticsearch']['default']['ES_GROUP']=''default['elasticsearch']['default']['ES_HEAP_SIZE']=''default['elasticsearch']['default']['MAX_OP
require"socket"server="irc.rizon.net"port="6667"nick="RubyIRCBot"channel="#0x40"s=TCPSocket.open(server,port)s.print("USERTesting",0)s.print("NICK#{nick}",0)s.print("JOIN#{channel}",0)这个IRC机器人没有连接到IRC服务器,我做错了什么? 最佳答案 失败并显示此消息::irc.shakeababy.net461*USER:Notenoughparame