Neos\Flow\Mvc\Routing\UriBuilder::uriFor PHP 메소드

uriFor() 공개 메소드

Creates an URI used for linking to an Controller action.
또한 보기: build()
public uriFor ( string $actionName, array $controllerArguments = [], string $controllerName = null, string $packageKey = null, string $subPackageKey = null ) : string
$actionName string Name of the action to be called
$controllerArguments array Additional query parameters. Will be merged with $this->arguments.
$controllerName string Name of the target controller. If not set, current ControllerName is used.
$packageKey string Name of the target package. If not set, current Package is used.
$subPackageKey string Name of the target SubPackage. If not set, current SubPackage is used.
리턴 string the rendered URI
    public function uriFor($actionName, $controllerArguments = [], $controllerName = null, $packageKey = null, $subPackageKey = null)
    {
        if ($actionName === null || $actionName === '') {
            throw new Exception\MissingActionNameException('The URI Builder could not build a URI linking to an action controller because no action name was specified. Please check the stack trace to see which code or template was requesting the link and check the arguments passed to the URI Builder.', 1354629891);
        }
        $controllerArguments['@action'] = strtolower($actionName);
        if ($controllerName !== null) {
            $controllerArguments['@controller'] = strtolower($controllerName);
        } else {
            $controllerArguments['@controller'] = strtolower($this->request->getControllerName());
        }
        if ($packageKey === null && $subPackageKey === null) {
            $subPackageKey = $this->request->getControllerSubpackageKey();
        }
        if ($packageKey === null) {
            $packageKey = $this->request->getControllerPackageKey();
        }
        $controllerArguments['@package'] = strtolower($packageKey);
        if ($subPackageKey !== null) {
            $controllerArguments['@subpackage'] = strtolower($subPackageKey);
        }
        if ($this->format !== null && $this->format !== '') {
            $controllerArguments['@format'] = $this->format;
        }
        $controllerArguments = $this->addNamespaceToArguments($controllerArguments, $this->request);
        return $this->build($controllerArguments);
    }

Usage Example

 /**
  * @test
  */
 public function uriForPrefixesControllerArgumentsWithSubRequestArgumentNamespaceOfParentRequestIfCurrentRequestHasNoNamespace()
 {
     $expectedArguments = ['SubNamespace' => ['arg1' => 'val1', '@action' => 'someaction', '@controller' => 'somecontroller', '@package' => 'somepackage']];
     $this->mockMainRequest->expects($this->any())->method('getArguments')->will($this->returnValue([]));
     $this->mockSubSubRequest->expects($this->any())->method('getArgumentNamespace')->will($this->returnValue(''));
     $this->uriBuilder->setRequest($this->mockSubSubRequest);
     $this->uriBuilder->uriFor('SomeAction', ['arg1' => 'val1'], 'SomeController', 'SomePackage');
     $this->assertEquals($expectedArguments, $this->uriBuilder->getLastArguments());
 }
All Usage Examples Of Neos\Flow\Mvc\Routing\UriBuilder::uriFor