我正在尝试使用var_dump()或任何调试功能在“某些页面”上打印模块中的所有路径。
我发现了很多帖子和样本,但我无法打印出来,大多数示例都在我的代码中失败。
到目前为止,我认为这是最好的方法,但在哪里使用此代码?
// $sl instanceof Zend\ServiceManager\ServiceManager
$config = $sl->get('Config');
$routes = $config['router']['routes'];
如果要查看所有路由仅用于调试目的,可以在路由器对象上使用var_dump或类似路径:
// $sl instanceof Zend\ServiceManager\ServiceManager
$router = $sl->get('Router');
var_dump($router);
答案 0 :(得分:2)
您可以在控制器的方法中打印所有路线。请看以下示例
模块/应用/ SRC /应用/控制器/ IndexController.php
<?php
namespace Application\Controller;
use Zend\View\Model\ViewModel;
use Zend\Mvc\Controller\AbstractActionController;
class IndexController extends AbstractActionController
{
/**
* @var array
*/
protected $routes;
/**
* @param array $routes
*/
public function __construct(array $routes)
{
// Here is the catch
$this->routes = $routes;
}
public function indexAction()
{
// Thus you may print all routes
$routes = $this->routes;
echo '<pre>';
print_r($routes);
echo '</pre>';
exit;
return new ViewModel();
}
}
当我们将一系列路由传递给IndexController
的构造函数时。我们需要建立这个控制器的工厂。工厂是一个创建其他类实例的类。
模块/应用/ SRC /应用/控制器/ IndexControllerFactory.php
<?php
namespace Application\Controller;
use Zend\ServiceManager\FactoryInterface;
use Zend\ServiceManager\ServiceLocatorInterface;
class IndexControllerFactory implements FactoryInterface
{
public function createService(ServiceLocatorInterface $serviceLocator)
{
$serviceManager = $serviceLocator->getServiceLocator();
$config = $serviceManager->get('Config');
$routes = $config['router'];
return new IndexController($routes);
}
}
不能使用参数构造可调用的类。我们的控制器不能用作invokables
,因为我们知道我们已经将参数传递给它的构造函数。因此,我们需要在factories
的{{1}}密钥下的controllers
密钥中对其进行配置
模块/应用/配置/ module.config.php
module.config.php
此答案已根据@ av3建议的良好做法进行了编辑!