Yii2 Как я могу направить текущий URL к контроллеру вне корневого пути текущего проекта? - PullRequest
0 голосов
/ 04 июля 2018

У меня есть 2 сайта проектов в главном каталоге внутри / var / www / directory то, что я хочу сделать, это создать контроллер с его представлениями, которые будут разделены между двумя проектами, а не повторять один и тот же контроллер в обоих проектах, теперь я создаю это бывшее myController.php внутри хоста A

Как я могу получить доступ к контроллеру со второго хоста B? и сделать функцию myaction?

правила URL в файле конфигурации main.php 'NewPage / список' => 'myController / MyAction',

Редактировать :: Я использую этот расширенный шаблон

**DIRECTORY STRUCTURE**
common
    config/              contains shared configurations
    mail/                contains view files for e-mails
    models/              contains model classes used in both backend and frontend
    tests/               contains tests for common classes    
console
    config/              contains console configurations
    controllers/         contains console controllers (commands)
    migrations/          contains database migrations
    models/              contains console-specific model classes
    runtime/             contains files generated during runtime
backend
    assets/              contains application assets such as JavaScript and CSS
    config/              contains backend configurations
    controllers/         contains Web controller classes
    models/              contains backend-specific model classes
    runtime/             contains files generated during runtime
    tests/               contains tests for backend application    
    views/               contains view files for the Web application
    web/                 contains the entry script and Web resources
frontend
    assets/              contains application assets such as JavaScript and CSS
    config/              contains frontend configurations
    controllers/         contains Web controller classes
    models/              contains frontend-specific model classes
    runtime/             contains files generated during runtime
    tests/               contains tests for frontend application
    views/               contains view files for the Web application
    web/                 contains the entry script and Web resources
    widgets/             contains frontend widgets
vendor/                  contains dependent 3rd-party packages
environments/            contains environment-based overrides

Вопрос: Как я могу получить доступ к контроллерам внешнего интерфейса в каталоге внешнего интерфейса из правил внутреннего интерфейса?

Ответы [ 2 ]

0 голосов
/ 07 июля 2018

На самом деле вы можете повторно использовать классы контроллера внешнего интерфейса в бэкэнде - вы можете использовать controllerMap свойство приложения или модуля для определения пользовательских классов контроллера. Например, если вы добавите что-то подобное в вашу конфигурацию бэкэнда:

'controllerMap' => [
    'mycontroller' => 'frontend\controllers\SomeController',
],

Тогда frontend\controllers\SomeController будет действовать так, как если бы backend\controllers\MycontrollerController - backend.local/mycontroller будет использовать тот же контроллер, что и frontend.local/some, но с другим контекстом (и, возможно, макетами).

Вы даже можете использовать controllerNamespace для загрузки всех контроллеров из заданного пространства имен. Например, создайте отдельный модуль в бэкэнде:

namespace backend\modules;

class FrontendModule extends \yii\base\Module {

    public $controllerNamespace = 'frontend\controllers';
}

Тогда этот модуль будет использовать все контроллеры внешнего интерфейса в контексте сервера. backend.local/frontend/some будет использовать frontend\controllers\SomeController.

0 голосов
/ 05 июля 2018

Frontend и Backed - это два разных модуля. Когда они загружаются из index.php, они ведут себя как два отдельных проекта. Таким образом, вы не можете перейти от внешнего интерфейса к резервному или наоборот, используя urlManager из Yii.

Может быть, вы можете поддерживать некоторые параметры в общих / params, где вы можете настроить абсолютный URL.

...