4

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',
    ),
),

);

これが私のコントローラーコードです

Collat​​eralController.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

このビュー ファイルが必要かどうか、正しい場所にあり、適切に名前が付けられているかどうか疑問に思っています。

このエラーに関するその他の支援をいただければ幸いです。参考になる情報があれば教えていただけると幸いです。

ありがとうございました。

4

2 に答える 2