4

何度も試行した後、残りの機能をテスト アプリケーション内で動作させることができません。

Zend FrameWork 2.0.0beta3 で RestfulController クラスを使用した経験のある人はいるかと思います。

RestfulController 抽象クラスのメソッドを実装し、getList() メソッドに "Foo" をエコーさせ、curl リクエストを実行して出力を取得しましたが、取得し続けるのは空白の画面だけです。

zend フレームワーク 1.x のオプションがあることは知っていますが、私のプロジェクトでは 2.x を使用する必要があります。

あなたの一人が私に何か助けを提供してくれるなら、それは大歓迎です!

4

3 に答える 3

5

私は同じタイプのアプリに取り組んでいますが、これまでのところかなり問題なく動作しています

ルーティング:

'type' => 'Zend\Mvc\Router\Http\Segment',
'options' => array(
    'route' => '/[:controller[.:format][/:id]]',
    'constraints' => array(
        'controller' => '[a-zA-Z][a-zA-Z0-9_-]*',
        'format' => '(xml|json|sphp|amf)',
        'id' => '[1-9][0-9]*',
    ),
    'defaults' => array(
        'controller' => 'Rest\Controller\IndexController',
        'format' => 'json',
    ),

DI エイリアス:

'alias' => array(
    'index' => 'Rest\Controller\IndexController',
    ...
)

コントローラーでは、レンダリングのために返すコンテンツのタイプは独自の戦略に依存し、さまざまな方法で実現できます。

私の場合、次のようなさまざまな形式で応答できる必要があります: php serializejsonamfおよびコールバック ハンドラ経由で返します。xmlZend\Serializer\Adapter

簡単な概要:

namespace Rest\Controller
{
    use Zend\Mvc\Controller\RestfulController;

    class IndexController extends RestfulController
    {
        public function getList()
        {
            $content = array(
                1 => array(
                    'id' => 1,
                    'title' => 'Title #1',
                ),
                2 => array(
                    'id' => 2,
                    'title' => 'Title #2',
                ),
            );
            /**
            * You may centralized this process through controller's event callback handler
            */
            $format = $this->getEvent()->getRouteMatch()->getParam('format');
            $response = $this->getResponse();
            if($format=='json'){
                $contentType = 'application/json';
                $adapter = '\Zend\Serializer\Adapter\Json';
            }
            elseif($format=='sphp'){
                $contentType = 'text/plain';
                $adapter = '\Zend\Serializer\Adapter\PhpSerialize';
            }
            // continue for xml, amf etc.

            $response->headers()->addHeaderLine('Content-Type',$contentType);
            $adapter = new $adapter;
            $response->setContent($adapter->serialize($content));
            return $response;
            }

            // other actions continue ...
    }
}

また、モジュールをアプリケーション構成に登録することを忘れないでください

于 2012-04-14T05:39:19.253 に答える
3

現在の情報でどのように実装したかはわかりませんが、Restful は ZF2 で問題なく動作するはずです。beta2で動作させました。

  • コントローラーが RestfulController を拡張し、ルートがコントローラーと id パラメーターを正しくピックアップしていることを確認してください。'/[:コントローラー[/[:id]]]'. ルート タイプとして「Zend\Mvc\Router\Http\Segment」を使用します。
  • HTTP GET メソッドで curl を使用し、id を使用しない場合は、getList() メソッドを呼び出す必要があります。ID が指定されている場合は、代わりに get($id) が呼び出されます。
  • エコーする代わりに、配列を返してみてください。

GitHubのZF2 Restful Module Skeletonを参照して、インスピレーションを得ることもできます。

于 2012-03-19T16:45:38.720 に答える
3

次の ZF2 モジュールを検討してください。

具体的には、 Module.php および config/module.config.php ファイルが役立つ場合があります。

于 2012-05-18T23:57:17.827 に答える