У меня есть сайт, я пытаюсь использовать два модуля. по умолчанию и api. Сайт работает по умолчанию и работает нормально (http://localhost). Но я пытаюсь использовать модуль API, как это (http://localhost/api/other-params). Но он все еще загружает сайт. У меня есть два маршрута, которые настроены так:
'apiDivisionStandings' => array(
'type' => 'Zend_Controller_Router_Route',
'route' => 'api/division/standings/:userID',
'defaults' => array(
'module' => 'api',
'controller' => 'division',
'action' => 'standings'
)
),
'defaultSchoolSize' => array(
'type' => 'Zend_Controller_Router_Route',
'route' => ':state/:size/schools',
'defaults' => array(
'module' => 'default',
'controller' => 'school',
'action' => 'size'
)
),
И в моем файле начальной загрузки:
Zend_Date::setOptions(array('format_type' => 'php'));
Zend_Layout::startMvc(array('layout' => 'website/default' , 'layoutPath' => APPLICATION_PATH . '/default/layouts' , 'contentKey' => 'content'));
$routes = new Zend_Config(Routes::getRoutes());
$router = new Zend_Controller_Router_Rewrite();
$router->addConfig($routes, 'routes');
$this->bootstrap('frontController');
$frontController = Zend_Controller_Front::getInstance();
$frontController->setRouter($router);
$cOpts = array('lifetime' => 99000 ,'automatic_serialization' => true);
Zend_Registry::set('cache', Zend_Cache::factory('Core', 'File', $cOpts, array('cache_dir' => '../cache/')));
И в моем index.php до того, как я загрузился () -> run ();
require_once '../library/Zend/Loader/Autoloader.php';
$loader = Zend_Loader_Autoloader::getInstance();
$loader->setFallbackAutoloader(true);
$loader->suppressNotFoundWarnings(false);
$loader->registerNamespace('Api_');
My application.ini:
[production]
phpSettings.display_startup_errors = 0
phpSettings.display_errors = 0
includePaths.library = APPLICATION_PATH "/../library"
bootstrap.path = APPLICATION_PATH "/Bootstrap.php"
bootstrap.class = "Bootstrap"
resources.frontController.controllerDirectory = APPLICATION_PATH "/modules/default/controllers"
resources.frontController.moduleDirectory = APPLICATION_PATH "/modules"
И, наконец, часть моего DivisionController в папке application / modules / api / controllers (веб-сайт находится в application / modules / default; отлично работает):
class Api_DivisionController extends Zend_Rest_Controller
{
/**
* - Class setup
* - Tells framework not to render to view
* - sets default data type to JSON
*/
public function init()
{
$this->_helper->viewRenderer->setNoRender(true);
$this->_helper->contextSwitch()
->addActionContext('standings', array('xml','json'))
->addActionContext('news', array('xml', 'json'))
->setAutoJsonSerialization(true)
->initContext();
}
Но вместо того, чтобы получить ответ JSON на странице, я заставляю веб-страницу загружаться с сообщением об ошибке, что она не может найти представление. Чего мне не хватает?