Zend Framework 2.2.2 プロジェクトで RESTful Web サービス エンドポイントにアクセスしようとすると、エラーが発生します。V1 という名前のモジュールを作成していますが、次のエラーが表示されます。
Zend\View\Renderer\PhpRenderer::render: Unable to render template "v1/collateral/get-list"; resolver could not resolve to a file
これは、アプリケーションが必要なビュー ファイルを見つけられないことを示していると思います。私はこのチュートリアルから始めました。私は自分の問題に対する答えを探しましたが、同様の問題を抱えている他の人を見つけましたが、まだエラーがあるため、この時点で探している答えが見つかりませんでした. 私はZend Framework 2に比較的慣れていないので、これは経験豊富な人にとっては簡単なことかもしれません.
ルーティングとビュー マネージャーの戦略に関して、これまでに行ったことは次のとおりです。
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',
),
),
);
これが私のコントローラーコードです
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);
},
),
);
}
}
チュートリアルで読んだ内容に基づいて必要かどうかはわかりませんが、次の空のビュー ファイルを作成しました。
\module\V1\view\v1\collateral\get-list.phtml
このビュー ファイルが必要かどうか、正しい場所にあり、適切に名前が付けられているかどうか疑問に思っています。
このエラーに関するその他の支援をいただければ幸いです。参考になる情報があれば教えていただけると幸いです。
ありがとうございました。