1

私は Phalcon プログラミングの初心者です。管理者/バックエンドとフロントエンドのコントローラーがあります。管理者は「/admin/:controller/:action」で提供され、フロントエンドは「/:controller/:action」で提供されます。

管理コントローラー (KalkuRitel\Controllers\Admin 名前空間) は以下にあります。

app/
   controllers/
     admin/

およびフロントエンド コントローラー (KalkuRitel\Controllers\Frontend 名前空間) は次の場所にあります。

app/
   controllers/
     frontend/

どうすればこれを達成できますか? また、独自のレイアウトを使用して、管理およびフロントエンド コントローラー内で 404 ページを提供する方法は?

4

2 に答える 2

0

これを実現する最善の方法は、複数モジュール アプリケーションを作成することです。

複数モジュール アプリケーションのセットアップについて詳しくは、 https ://docs.phalconphp.com/en/latest/reference/applications.html#multi-module をご覧ください。

このための構造が整ったら、次のようにルートを設定できます。

/*
* Dependency Injector
*/
$di = new \Phalcon\Di\FactoryDefault();

/**
* Register a router
*/
$di->setShared('router', function () {
  $router = new \Phalcon\Mvc\Router();

  $router->setDefaultModule('frontend');
  $router->setDefaultNamespace('Multiple\Frontend\Controllers');

  /*
  * Frontend Routes
  */
  $router->add('/:controller/:action', array(
    'namespace'  => 'Multiple\Frontend\Controllers',
    'module'     => 'frontend',
    'controller' => 1,
    'action'     => 2
  )); 

  /*
  * Backend Routes
  */     
  $backendRoutes = new \Phalcon\Mvc\Router\Group(array(
    'namespace' => 'Multiple\Backend\Controllers',
    'module'    => 'backend'
  ));
  $backendRoutes->setPrefix('/admin');

  $backendRoutes->add('/:controller/:action', array(
    'controller' => 1,
    'action'     => 3
  ));

  $router->mount($backendRoutes);

  return $router;
});

これは簡単な答えであり、個々の状況に合わせて微調整が必​​要になる場合がありますが、目標を達成する方法についての良いアイデアが得られるはずです.

于 2016-01-04T16:58:54.200 に答える