2017-09-16 124 views
1

在我的应用程序中,我在控制器中创建了第二个动作。当我通过网址http://local.domain调用应用程序时,我得到了正确的页面,所以它被称为正确的控制器。但如果我想打这个电话http://local.domain/liga-futbol-1它不工作,我得到这个错误:ZF3:未找到动作和视图

A 404 error occurred Page not found. The requested URL could not be matched by routing.

No Exception available

IndexController.php

namespace Stats\Controller; 

use Zend\Mvc\Controller\AbstractActionController; 

class IndexController extends AbstractActionController { 
    public function indexAction() 
    { 
     //This action serves the page 
     return []; 
    } 

    public function ligaFubtol1Action(){ 

     return []; 
    } } 

module.config.php

namespace Stats; 

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

return [ 
    'controllers' => [ 
     'factories' => [ 
      Controller\IndexController::class => InvokableFactory::class, 
     ], 
    ], 
    'router' => [ 
     'routes' => [ 
      'home' => [ 
       'type' => 'Literal', 
       'options' => [ 
        // This works!!! => http://local.domain 
        'route' => '/', 
        'defaults' => [ 
         'controller' => Controller\IndexController::class, 
         'action'  => 'index', 
        ], 
       ], 
       'may_terminate' => true, 
       'child_routes' => [ 
        // This doesn't work!!! http://local.domain/liga-futbol-1 
        'liga-futbol-1' => [ 
         'type' => Segment::class, 
         'options' => [ 
          'route' => '/liga-futbol-1', 
          'defaults' => [ 
           'controller' => Controller\IndexController::class, 
           'action'  => 'ligaFutbol1' 
          ], 
         ], 
         'may_terminate' => true, 
         'child_routes' => [ 
         ], 
        ],      
       ], 
      ],  
     ], 
    ], 
    '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.phtml', 
      'stats/index/index'  => __DIR__ . '/../view/stats/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', 
     ],   
    ], 
]; 

本公司归属的名录:

enter image description here

我检查我的缓存中的 “/ dir_project /数据/缓存” 并没有什么。

我在做什么错?

回答

3

看看home路线的route选项:它设置为/。该liga-futbol-1路线是home路线的子路径,因此它的网址是的“总和”:

  • home网址:/
  • liga-futbol-1网址:/liga-futbol-1

在结果://liga-futbol-1home/liga-futbol-1路由的URL。

如果你只想像/liga-futbol-1,有两种解决方案:

  1. liga-futbol-1路线独立的home路线的(即不是其子):

    'routes' => [ 
        'home' => [ 
         'type' => Literal::class, 
         'options' => [ 
          'route' => '/', 
          'defaults' => [ 
           'controller' => Controller\IndexController::class, 
           'action'  => 'index' 
          ] 
         ] 
        ], 
        'liga-futbol-1' => [ 
         'type' => Segment::class, 
         'options' => [ 
          'route' => '/liga-futbol-1', 
          'defaults' => [ 
           'controller' => Controller\IndexController::class, 
           'action'  => 'ligaFutbol1' 
          ] 
         ] 
        ] 
    ] 
    
  2. 删除/liga-futbol-1开始route选项:

    'liga-futbol-1' => [ 
        'type' => Segment::class, 
        'options' => [ 
         'route' => 'liga-futbol-1', 
          'defaults' => [ 
           'controller' => Controller\IndexController::class, 
           'action'  => 'ligaFutbol1' 
          ] 
         ] 
        ] 
    
+0

它的工作原理!非常感谢你@gsc!一百万的感谢! –