2017-05-03 10 views
0

私はZF2の開発者です。私はZF3に移行しており、いくつかのコントローラに問題があります。ZF3:子ルートのコントローラが動作しません

たとえば、私はこのURLを持っています:http://localhost/admin正しいコントローラ(IndexController)を呼び出し、正しいビューを表示します。しかし、私がこのURL:http://localhos/admin/articuloとArticuloControllerを関連づけたいのであれば動作しません。私はこのURLを呼び出します:http://localhost/admin/articuloコントローラはAdminControllerであり、ビューは見つかりません。

OPTION 1 => module.config.php:

namespace Admin; 

use Zend\Router\Http\Literal; 
use Zend\Router\Http\Segment; 
use Zend\ServiceManager\Factory\InvokableFactory; 

return [ 
    'router' => [ 
     'routes' => [ 
      'admin' => [ 
       'type' => Segment::class, 
       'options' => [ 
        'route' => '/admin[/:action]', 
        'defaults' => [ 
         'controller' => Controller\IndexController::class, 
         'action'  => 'index', 
        ], 
       ], 
      ], 
      'admin/articulos' => [ 
       'type' => Segment::class, 
       'options' => [ 
        'route' => '/admin/articulos[/:action]', 
        'defaults' => [ 
         'controller' => Controller\ArticulosController::class, 
         'action'  => 'index', 
        ], 
       ], 
      ],    
     ], 
    ], 
    'controllers' => [ 
     'factories' => [ 
      Controller\IndexController::class => InvokableFactory::class, 
      Controller\ArticulosController::class => InvokableFactory::class, 
     ], 
    ], 
    'view_manager' => [ 
     'display_not_found_reason' => true, 
     'display_exceptions'  => true, 
     'doctype'     => 'HTML5', 
     'not_found_template'  => 'error/404', 
     'exception_template'  => 'error/index', 
     'template_map' => [ 
      'layout/layout'   => __DIR__ . '/../view/layout/layout-admin.phtml', 
      'admin/index/index'  => __DIR__ . '/../view/admin/index/index.phtml', 
      'error/404'    => __DIR__ . '/../view/error/404.phtml', 
      'error/index'    => __DIR__ . '/../view/error/index.phtml', 
     ], 
     'template_path_stack' => [ 
      __DIR__ . '/../view', 
     ], 
     /* 
     * Con este array de parámetros permitimos enviar datos y no mostrar vista 
     */ 
     'strategies' => [ 
      'ViewJsonStrategy', 
     ],   
    ], 
]; 

OPTION 2 => module.config.php(ZF2スタイル):

namespace Admin; 

use Zend\Router\Http\Literal; 
use Zend\Router\Http\Segment; 
use Zend\ServiceManager\Factory\InvokableFactory; 

return [ 
    'router' => [ 
     'routes' => [ 
      'admin' => [ 
       'type' => Segment::class, 
       'options' => [ 
        'route' => '/admin[/:action]', 
        'defaults' => [ 
         'controller' => Controller\IndexController::class, 
         'action'  => 'index', 
        ], 
       ], 
      ], 
      'admin/articulos' => [ 
       'type' => Literal::class, 
       'options' => [ 
        'route' => '/admin/articulos[/:action]', 
        'defaults' => [ 
         'controller' => 'Articulos', 
         'action'  => 'index', 
        ],     
       ], 
       'may_terminate' => true, 
       'child_routes' => [ 
        'default' =>[ 
         'type' => Segment::class, 
         'options' => [ 
          'route' => '/[:controller[/:action][/:id1]]', 
          'constraints' => [ 
           'controller' => '[a-zA-Z][a-zA-Z0-9_-]*', 
           'action'  => '[a-zA-Z][a-zA-Z0-9_-]*', 
           'id1'   => '[0-9_-]*' 
          ], 
          'defaults' => [], 
         ], 
        ], 
       ], 
      ],    
     ], 
    ], 
    'controllers' => [ 
     'factories' => [ 
      Controller\IndexController::class => InvokableFactory::class, 
      Controller\ArticulosController::class => InvokableFactory::class, 
     ], 
    ], 
    'view_manager' => [ 
     'display_not_found_reason' => true, 
     'display_exceptions'  => true, 
     'doctype'     => 'HTML5', 
     'not_found_template'  => 'error/404', 
     'exception_template'  => 'error/index', 
     'template_map' => [ 
      'layout/layout'   => __DIR__ . '/../view/layout/layout-admin.phtml', 
      'admin/index/index'  => __DIR__ . '/../view/admin/index/index.phtml', 
      'error/404'    => __DIR__ . '/../view/error/404.phtml', 
      'error/index'    => __DIR__ . '/../view/error/index.phtml', 
     ], 
     'template_path_stack' => [ 
      __DIR__ . '/../view', 
     ], 
     /* 
     * Con este array de parámetros permitimos enviar datos y no mostrar vista 
     */ 
     'strategies' => [ 
      'ViewJsonStrategy', 
     ],   
    ], 
]; 

OPTION 3 = > module.config.php(次のzf3チュートリアル): https://docs.zendframework.com/zend-mvc/routing/#http-routing-examples

構成のすべてのために
namespace Admin; 

use Zend\Router\Http\Literal; 
use Zend\Router\Http\Segment; 
use Zend\ServiceManager\Factory\InvokableFactory; 

return [ 
    'router' => [ 
     'routes' => [ 
      'admin' => [ 
       'type' => Segment::class, 
       'options' => [ 
        'route' => '/admin[/:action]', 
        'defaults' => [ 
         'controller' => Controller\IndexController::class, 
         'action'  => 'index', 
        ], 
       ], 
       'may_terminate' => true, 
       'child_routes' => [ 
        'articulos' => [ 
         'type' => Segment::class, 
         'options' => [ 
          'route' => '/articulos[/:action]', 
          'defaults' => [ 
           'controller' => Controller\ArticulosController::class, 
           'action'  => 'index' 
          ], 
         ], 
        ], 
       ], 
      ],   
     ], 
    ], 
    'controllers' => [ 
     'factories' => [ 
      Controller\IndexController::class => InvokableFactory::class, 
      Controller\ArticulosController::class => InvokableFactory::class, 
     ], 
    ], 
    'view_manager' => [ 
     'display_not_found_reason' => true, 
     'display_exceptions'  => true, 
     'doctype'     => 'HTML5', 
     'not_found_template'  => 'error/404', 
     'exception_template'  => 'error/index', 
     'template_map' => [ 
      'layout/layout'   => __DIR__ . '/../view/layout/layout-admin.phtml', 
      'admin/index/index'  => __DIR__ . '/../view/admin/index/index.phtml', 
      'error/404'    => __DIR__ . '/../view/error/404.phtml', 
      'error/index'    => __DIR__ . '/../view/error/index.phtml', 
     ], 
     'template_path_stack' => [ 
      __DIR__ . '/../view', 
     ], 
     /* 
     * Con este array de parámetros permitimos enviar datos y no mostrar vista 
     */ 
     'strategies' => [ 
      'ViewJsonStrategy', 
     ],   
    ], 
]; 

私はURLを呼び出す:あなたはと呼ばれるコントローラが管理\コントローラ\ IndexControllerであることがわかります私が手http://localhost/admin/articulos図である...

enter image description here

とないAdmin \ Controller \ ArticulosController

私は間違っていますか?

更新1:

オプション3の設定は問題ありません。 ...私はテンプレートをレンダリング今エラーを持っている...私は、キャッシュディレクトリ/からすべてのコンテンツを削除しており、今でコントローラが検出されたが、

メッセージ:

のZend \ビュー\レンダラー\ PhpRenderer ::レンダー:テンプレートをレンダリングすることができません "admin/articulos/index";

0 /var/www/html/31juegos/vendor/zendframework/zend-view/src/View.php(207):リゾルバは、スタックトレース

ファイルに解決できませんでした: Zendの\ビュー\レンダラは\ PhpRenderer->()

1 /var/www/html/31juegos/vendor/zendframework/zend-view/src/View.php(236)レンダリング: のZend \ビュー\ビュー - >レンダリング(オブジェクト(Zend \ View \ Model \ ViewModel))

2 /var/www/html/31juegos/vendor/zendframework/zend-view/src/View.php(200): Zend \ View \ View-> renderChildren(Object(Zend \ View \ Model \ ViewModel))

3/var/www/html/31juegos/vendor/zendframework/zend-mvc/src/View/Http/DefaultRenderingStrategy。PHP(105):

のZend \ビュー\ [表示] - >レンダリング(オブジェクト(Zendの\ビュー\モデル\ ViewModelに))

4/var/www/htmlと設定/ 31juegos /ベンダー/ zendframework/Zendの-eventmanager /src/EventManager.php(322): のZend \ MVC \ビュー\のHttp \ DefaultRenderingStrategy->レンダリング(オブジェクト(Zendの\ MVC \ MvcEvent))

5/var/www/htmlと設定/ 31juegos /ベンダー/ zendframework /zend-eventmanager/src/EventManager.php(171): Zendの\ EventManager \ EventManager-> triggerListeners(オブジェクト(Zendの\ MVC \ MvcEvent))

6の/ var/WWW/HTML/31juegos /ベンダー/ zendframewo RK/Zendの-MVC/SRC/Application.php(367): のZend \ EventManager \ EventManager->のTriggerevent(オブジェクト(Zendの\ MVC \ MvcEvent))

7/var/www/htmlと設定/ 31juegos /ベンダー/ zendframework/Zendの-MVC/SRC/Application.php(348): のZend \ MVC \応用 - > completeRequest(オブジェクト(Zendの\ MVC \ MvcEvent))

8/var/www/htmlと設定/ 31juegos /公共/ index.phpを(40):Zendの\ MVC \アプリケーション - >ラン()

9 {メイン}

enter image description here

+0

これは、この問題は、もはや再現できない問題や簡単な誤字によって引き起こされた_のために閉じられていることをお勧めします。 – halfer

答えて

1

typo号です。ルータ/admin/articulosArticulosControllerindexAction()を指しているので、このhttp://localhost/admin/articulosの ""の末尾に注意してください)を試してください。そのため、このURLはhttp://localhost/admin/articuloの ""を終えずに発送できませんでした。また、表示構造はmodule/controller/actionである必要があります。

+0

ありがとうございました!しかし、http:// localhost/admin/articulosが動作しません:( –

+0

http:// localhost/admin/articulosを試しても同じエラーが表示されますか? – unclexo

+0

はい、私の最初の投稿に詳しい情報を追加しました –

0

(OPの代わりに掲示)

最後に、私は最後の問題を修正しました。問題は私のindex.phtmlが間違ったディレクトリ/view/admin/articulos/**index/**index.phtmlにあったためです。正しいディレクトリは/view/admin/articulos/index.phtmlです。

関連する問題