Zend Framework - Nasıl bir modül olmadan bir hiyerarşi yapabilirim?

2 Cevap php

İşte benim özel bir konudur. Ben o altında size hangi yöntemi seçebilirsiniz bir API düzeyde yapmak istiyoruz. Örneğin:

test.com / api / dinlenme

test.com / api / xmlprc

Currently I have api mapping to a module directory. I then setup a route to make it a rest route. test.com/api is a rest route, but I would rather have it be test.com / api / dinlenme. This would allow me later to add others.

Bootstrap.php in:

        $front = Zend_Controller_Front::getInstance();
  $router = $front->getRouter();
    $route = new Zend_Controller_Router_Route(
 'api/:module/:controller/:id/*',
 array('module' =>'default')

);

$ Router-> addRoute ('api', $ yol);

$restRoute = new Zend_Rest_Route($front, array(), array( 'rest' )); $router->addRoute('rest', $restRoute);

$ yönlendirici dönmek;

Application.ini in:

resources.frontController.moduleDirectory = APPLICATION_PATH "/modules"

Ben o yolları içerecektir biliyorum, ama bazen Zend Framework belgeleri takip etmek biraz zor buluyorum.

When I go to test.com/rest/controller/ it works how it should, but if I go to test.com / api / dinlenme/ it tells me that my module is api and controller is rest.

2 Cevap

(: Twitter ben eski, bunu API 'lerin çok gördüm) action.xml: kontrolörü /: action.json veya API /: kontrolörü / aslında api / gibi bir şey yapmak isteyebilirsiniz.

Bunu sağlamak için böyle bir şey yapabilirsiniz:

$front = Zend_Controller_Front::getInstance();
$router = $front->getRouter(); // returns a rewrite router by default
$router->addRoute(
            'json_request',
            new Zend_Controller_Router_Route_Regex(
                                            '([^-]*)/([^-]*)/([^-]*)\.json', 
                                            array(
                                                'controller'   => 'index',
                                                'action'       => 'index',
                                                'request_type' => 'json'),
                                            array(
                                                1 => 'module',
                                                2 => 'controller',
                                                3 => 'action'
                                            )
        ));

Then just check your parameter "request-type" and serve the request based on what you have. You should change your layout to enconde JSON or XML based on your request also.

Bu ile de bir API modülü gerekir.

Not: Bir modülün önyükleme sizin modüllerin TÜM eklenir özen gösterin şu nedenle tüm modülleri bu rota çalışma olurdu. Şu anda bu düzeltmek için bir yol için kontrol ediyorum yani bunu nasıl söyleyemem.

Bu yardımcı umut!

Sizin orijinal çizgi bu oldu.

$restRoute = new Zend_Rest_Route($front, array(), array( 'rest' ));

Belirli denetleyicileri için Zend_Rest_Route etkinleştirmek her modül dizi öğesinin değeri olarak kontrolör isimlerinden oluşan bir dizi eklemek.

$restRoute = new Zend_Rest_Route($front, array(), array( 'api' ) => array('rest'));

Also reference http://framework.zend.com/manual/en/zend.controller.router.html

Bu yardımcı olabilir umuyoruz.