0

私はZend Applicationを通常どおり設定しましたが、私の場合は、以上の既存のレガシーWebアプリケーションをに設定しています。エラーを修正するには "ミドルウェアアプリケーションミドルウェア IndexMiddlewareをディスパッチできません"?

私はまだZF3アプリで既存のレガシーアプリケーションを呼びたいと思っています。私はミドルウェアを使ってそうすることができると示唆されました。私はhttps://docs.zendframework.com/zend-mvc/middleware/に行き、ここに記載されているように私のルーティングを設定しました。

私は、アプリケーションを実行する場合しかし、私はこれで迎えています: https://github.com/zendframework/zend-mvc/blob/release-3.1.0/src/MiddlewareListener.php#L146

をするだけに注意すること::例外が発生したのはここ

Cannot dispatch middleware Application\Middleware\IndexMiddleware 

#0 zend-mvc\src\MiddlewareListener.php(146): 
Zend\Mvc\Exception\InvalidMiddlewareException::fromMiddlewareName('Application\\Mid...') 

がある

$middlewareToBePiped; //'Application\Middleware\IndexMiddleware' 
is_string($middlewareToBePiped); // true 
$serviceLocator->has($middlewareToBePiped);//false 
$middlewareToBePiped instanceof MiddlewareInterface; //false 
is_callable($middlewareToBePiped);//false 

マイクラス:

namespace Application\Middleware; 

use Psr\Http\Message\ResponseInterface; 
use Psr\Http\Message\ServerRequestInterface; 
use Interop\Http\ServerMiddleware\MiddlewareInterface; 
use Interop\Http\ServerMiddleware\DelegateInterface; 
use Zend\Http\Response; 

class IndexMiddleware implements MiddlewareInterface 
{ 

    public function __invoke(ServerRequestInterface $request, ResponseInterface $response) 
    {} 

    public function process(ServerRequestInterface $request, DelegateInterface $delegate) 
    {} 
} 

私の問題は、IndexMiddlewareクラスがServiceLocator ...(リンクされたAPIの142行目)に見つかりませんと考えています。どうやってそこに入れるの?

答えて

0

私は私のapplication.config.phpファイルにこれを置く:) ...それは次のエラーに

'service_manager' => [ 
    'invokables' => array(
     'middleware' => IndexMiddleware::class 
    ) 
] 

それが実行しているように見えます(実行された最後のミドルウェアは、応答を返しませんでした。)

関連する問題