-2
モジュールModule.php内のクラスModuleのコントローラとアクションを変更するには?リダイレクトなしでアクセスを制限する必要があります。 URIは変更されません。したがって、テンプレート出力だけでなく、コントローラとアクションを上書きする必要があります。クラスモジュールのコントローラとアクションを変更してください
モジュールModule.php内のクラスModuleのコントローラとアクションを変更するには?リダイレクトなしでアクセスを制限する必要があります。 URIは変更されません。したがって、テンプレート出力だけでなく、コントローラとアクションを上書きする必要があります。クラスモジュールのコントローラとアクションを変更してください
達成しようとしているのは、一致するルートハンドラを変更することです。あなたがディスパッチイベントのイベントハンドラを登録onBoostrap方法で
<?php
/* module/Application/src/Module.php */
namespace Application;
use Application\Controller\IndexController;
use Zend\EventManager\EventInterface;
use Zend\ModuleManager\Feature\BootstrapListenerInterface;
use Zend\Mvc\MvcEvent;
use Zend\Router\Http\RouteMatch;
class Module implements BootstrapListenerInterface
{
public function getConfig()
{
return include __DIR__ . '/../config/module.config.php';
}
public function onBootstrap(EventInterface $e)
{
if (!$e instanceof MvcEvent) {
return;
}
$em = $e->getApplication()->getEventManager();
$em->attach(MvcEvent::EVENT_DISPATCH, [$this, 'preCheck'], 1000);
}
public function preCheck(MvcEvent $e)
{
$e->setRouteMatch(new RouteMatch([
'controller' => IndexController::class,
'action' => 'test'
]));
}
}
:あなたはこのような何かを行うことができます。このイベントは、コントローラアクションが実行される前にトリガされます。イベントハンドラでは、すでに一致したルートを上書きすることができます。 このソリューションでは、同じルートに留まりますが、別のコントローラが要求を処理できます。