/** * @param Slim $app * @param Resolver $resolver */ public function register(Slim $app, Resolver $resolver) { $app->get('/', function () use($app) { $app->redirectTo('transfer_form'); }); $app->get('/transfer-form', $resolver->resolve($app, 'ewallet.transfer_form_controller:showForm', function () { return [Identifier::fromString('ABC')]; }))->name('transfer_form'); $app->post('/transfer-funds', $resolver->resolve($app, 'ewallet.transfer_funds_controller:transfer', function () use($app) { /** @var \EwalletModule\Bridges\Zf2\InputFilter\TransferFundsInputFilterRequest $request */ $request = $app->container->get('ewallet.transfer_filter_request'); $request->populate($app->request->post()); return [$request]; }))->name('transfer_funds'); }
/** @test */ function it_should_call_a_controller_with_arguments_defined_by_a_converter() { $expectedArgument = 'leonard_nimoy'; Environment::mock(['PATH_INFO' => "/test/{$expectedArgument}"]); $controller = $this->getMock(TestController::class); $controller->expects($this->once())->method('testWithArgument')->with($this->isInstanceOf(stdClass::class)); $resolver = new Resolver(); $app = new Slim(); $app->container->singleton('controller', function () use($controller) { return $controller; }); $app->get('/test/:name', $resolver->resolve($app, 'controller:testWithArgument', function (array $arguments) { return [new stdClass()]; // It replaces default arguments })); $app->run(); }