Fixed Resource-type not respecting parameters when using getUrl (issue: #666)

This commit is contained in:
sessingo
2023-05-06 17:29:33 +02:00
parent e105f266e3
commit f3c6015a59
2 changed files with 41 additions and 22 deletions
@@ -68,12 +68,15 @@ class RouteResource extends LoadableRoute implements IControllerRoute
*/ */
public function findUrl(?string $method = null, $parameters = null, ?string $name = null): string public function findUrl(?string $method = null, $parameters = null, ?string $name = null): string
{ {
$url = array_search($name, $this->names, true); $url = parent::findUrl($method, $parameters, $name);
if ($url !== false) {
return rtrim($this->url . $this->urls[$url], '/') . '/'; $action = array_search($name, $this->names, true);
if ($action !== false) {
return $url . $this->urls[$action];
} }
return $this->url; return $url;
} }
protected function call($method): bool protected function call($method): bool
@@ -66,4 +66,20 @@ class RouterResourceTest extends \PHPUnit\Framework\TestCase
} }
public function testResourceUrls()
{
TestRouter::resource('/resource', 'ResourceController')->name('resource');
TestRouter::debugOutputNoReset('/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/', TestRouter::router()->getUrl('resource'));
TestRouter::router()->reset();
}
} }