Skip to content

Commit

Permalink
RouteResource: simplified the findUrl method (issue: #666)
Browse files Browse the repository at this point in the history
  • Loading branch information
skipperbent committed May 6, 2023
1 parent 00d1c53 commit d3b1577
Show file tree
Hide file tree
Showing 5 changed files with 21 additions and 12 deletions.
1 change: 1 addition & 0 deletions src/Pecee/SimpleRouter/Route/LoadableRoute.php
Original file line number Diff line number Diff line change
Expand Up @@ -91,6 +91,7 @@ public function setUrl(string $url): ILoadableRoute
$parameters = array_fill_keys($matches[1], null);
}
}

$this->parameters = $parameters;

return $this;
Expand Down
14 changes: 9 additions & 5 deletions src/Pecee/SimpleRouter/Route/RouteResource.php
Original file line number Diff line number Diff line change
Expand Up @@ -68,15 +68,19 @@ public function hasName(string $name): bool
*/
public function findUrl(?string $method = null, $parameters = null, ?string $name = null): string
{
$url = parent::findUrl($method, $parameters, $name);
$url = array_search($name, $this->names, true);

$action = array_search($name, $this->names, true);
$parametersUrl = '';

if ($action !== false) {
return $url . $this->urls[$action];
if ($parameters !== null && count($parameters) > 0) {
$parametersUrl = join('/', $parameters) . '/';
}

return $url;
if ($url !== false) {
return rtrim($this->url . $parametersUrl . $this->urls[$url], '/') . '/';
}

return $this->url . $parametersUrl;
}

protected function call($method): bool
Expand Down
11 changes: 5 additions & 6 deletions tests/Pecee/SimpleRouter/RouterResourceTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -63,20 +63,19 @@ public function testResourceGet()
$response = TestRouter::debugOutput('/resource/38', 'get');

$this->assertEquals('show 38', $response);

}

public function testResourceUrls()
{
TestRouter::resource('/resource', 'ResourceController')->name('resource');

TestRouter::debugOutputNoReset('/resource');
TestRouter::debugNoReset('/resource');

$this->assertEquals('/resource/3/create/', TestRouter::router()->getUrl('resource.create', ['id' => 3]));
$this->assertEquals('/resource/3/edit/', TestRouter::router()->getUrl('resource.edit', ['id' => 3]));
$this->assertEquals('/resource/3/', TestRouter::router()->getUrl('resource.update', ['id' => 3]));
$this->assertEquals('/resource/3/', TestRouter::router()->getUrl('resource.destroy', ['id' => 3]));
$this->assertEquals('/resource/3/', TestRouter::router()->getUrl('resource.delete', ['id' => 3]));
$this->assertEquals('/resource/5/edit/', TestRouter::router()->getUrl('resource.edit', ['id' => 5]));
$this->assertEquals('/resource/6/', TestRouter::router()->getUrl('resource.update', ['id' => 6]));
$this->assertEquals('/resource/9/', TestRouter::router()->getUrl('resource.destroy', ['id' => 9]));
$this->assertEquals('/resource/12/', TestRouter::router()->getUrl('resource.delete', ['id' => 12]));
$this->assertEquals('/resource/', TestRouter::router()->getUrl('resource'));

TestRouter::router()->reset();
Expand Down
2 changes: 1 addition & 1 deletion tests/Pecee/SimpleRouter/RouterUrlTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -184,7 +184,7 @@ public function testUrls()
// Should match /?jackdaniels=true&cola=yeah
$this->assertEquals('/?jackdaniels=true&cola=yeah', TestRouter::getUrl('home', null, ['jackdaniels' => 'true', 'cola' => 'yeah']));

TestRouter::router()->reset();
TestRouter::reset();

}

Expand Down
5 changes: 5 additions & 0 deletions tests/TestRouter.php
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,11 @@ public function __construct()
static::request()->setHost('testhost.com');
}

public static function reset(): void
{
static::$router = null;
}

public static function debugNoReset(string $testUrl, string $testMethod = 'get'): void
{
$request = static::request();
Expand Down

0 comments on commit d3b1577

Please sign in to comment.