mirror of
https://github.com/ambieco/scribe.git
synced 2026-04-29 12:15:47 +08:00
Merge pull request #408 from YannikFirre/patch-1
Correctly normalize resource routes with hyphens
This commit is contained in:
@@ -148,18 +148,21 @@ class ExtractedEndpointData extends BaseDTO
|
||||
$foundResourceParam = false;
|
||||
foreach (array_reverse($pluralResources) as $pluralResource) {
|
||||
$singularResource = Str::singular($pluralResource);
|
||||
$search = ["{$pluralResource}/{{$singularResource}}", "{$pluralResource}/{{$singularResource}?}"];
|
||||
$singularResourceParam = str_replace('-', '_', $singularResource);
|
||||
|
||||
$search = ["{$pluralResource}/{{$singularResourceParam}}", "{$pluralResource}/{{$singularResource}?}"];
|
||||
|
||||
// We'll replace with {id} by default, but if the user is using a different key,
|
||||
// like /users/{user:uuid}, use that instead
|
||||
$binding = static::getFieldBindingForUrlParam($route, $singularResource, 'id');
|
||||
|
||||
if (!$foundResourceParam) {
|
||||
// Only the last resource param should be {id}
|
||||
$replace = ["$pluralResource/{{$binding}}", "$pluralResource/{{$binding}?}"];
|
||||
$foundResourceParam = true;
|
||||
} else {
|
||||
// Earlier ones should be {<param>_id}
|
||||
$replace = ["{$pluralResource}/{{$singularResource}_{$binding}}", "{$pluralResource}/{{$singularResource}_{$binding}?}"];
|
||||
$replace = ["{$pluralResource}/{{$singularResource}_{$binding}}", "{$pluralResource}/{{$singularResourceParam}_{$binding}?}"];
|
||||
}
|
||||
$uri = str_replace($search, $replace, $uri);
|
||||
}
|
||||
@@ -183,7 +186,7 @@ class ExtractedEndpointData extends BaseDTO
|
||||
public function forSerialisation()
|
||||
{
|
||||
$copy = $this->except(
|
||||
// Get rid of all duplicate data
|
||||
// Get rid of all duplicate data
|
||||
'cleanQueryParameters', 'cleanUrlParameters', 'fileParameters', 'cleanBodyParameters',
|
||||
// and objects used only in extraction
|
||||
'route', 'controller', 'method', 'auth',
|
||||
@@ -200,6 +203,7 @@ class ExtractedEndpointData extends BaseDTO
|
||||
if (method_exists($route, 'bindingFieldFor')) {
|
||||
$binding = $route->bindingFieldFor($paramName);
|
||||
}
|
||||
|
||||
return $binding ?: $default;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user