Phalcon ajenti配置在我的网站上运行多个模块


Phalcon ajenti config to run multiple module on my site

我正在学习多个模块的Phalcon。struct。

- apps
    - frontend
        controllers
        models
        views
        Modules.php
    - backend
        controllers
        models
        views
        Modules.php
- public
    css
    js
    img
    index.php

And nginx config:

server {
    listen *:80 default_server;

    server_name localhost.dev;
    access_log /var/log/nginx/localhostdev.access.log;
    error_log /var/log/nginx/localhostdev.error.log;
    root /srv/localhost.dev/public;
    index index.html index.htm index.php;
       set $root_path '/srv/localhost.dev/public';
    location / {
        root   $root_path;
        index  index.php index.html index.htm;
        # if file exists return it right away
        if (-f $request_filename) {
            break;
        }
        # otherwise rewrite it
        if (!-e $request_filename) {
            rewrite ^(.+)$ /index.php?_url=$1 last;
            break;
        }
    }
    location ~* ^/(css|img|js|flv|swf|download)/(.+)$ {
        root $root_path;
    }

    location ~ [^/]'.php(/|$) {

        fastcgi_index index.php;
        include fcgi.conf;
        fastcgi_pass unix:/var/run/ajenti-v-php-fcgi-localhostdev-php-fcgi-0.sock;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }
}
在公共场合

/index . php:

$di->set('router', function ()
{
    $router = new Router();
    $router->setDefaultModule("frontend");
    $router->add('/:module/:controller/:action/:params', array(
        'module'     => 1,
        'controller' => 2,
        'action'     => 3,
        'params'     => 4
    ));
    return $router;
});

当我访问localhost.dev:

it print: Hello Frontend!

但是,我访问了localhost.dev/frontend

它打印:前端'控制器'BackendController处理程序类不能被加载

如何修复?

额外问题。

我应该在nginx中配置什么:

root /srv/localhost.dev;
# nginx configuration 
location / { 
    rewrite ^/$ /public/ break; 
    rewrite ((?s).*) /public/$1 break; 
}
location /public/ { 
    if (!-e $request_filename){ 
        rewrite ^/((?s).*)$ /index.php?_url=/$1 break; 
    } 
}

root /srv/localhost.dev/public;
 # if file exists return it right away
        if (-f $request_filename) {
            break;
        }
        # otherwise rewrite it
        if (!-e $request_filename) {
            rewrite ^(.+)$ /index.php?_url=$1 last;
            break;
        }

对于你的第一个问题,我建议你使用Group of Routes来获得更好的体验。
示例:

$di->set('router', function ()
{
    $router = new Router();
    $router->setDefaultNamespace('your Frontend namespace');
    $router->setDefaultModule('frontend');
    $frontend = new 'Phalcon'Mvc'Router'Group(array(
       'module' => 'frontend',
       'namespace' => 'Your frontend NameSpace',
    ));
    $frontend->setPrefix('/frontend');

    $frontend->add('/:controller/:action/:params',array(
       'controller' => 1,
       'action' => 2,
       'params' => 3
    ));
    $router->mount($frontned);
    $backend = new 'Phalcon'Mvc'Router'Group(array(
       'module' => 'backend',
       'namespace' => 'Your backend NameSpace',
    ));
    $backend->setPrefix('/backend');

    $backend->add('/:controller/:action/:params',array(
       'controller' => 1,
       'action' => 2,
       'params' => 3
    ));
    $router->mount($backend);
    return $router;
}

同样,您可以使用命名空间来防止相似的名称冲突。

好运