Skip to content

Commit e9cb492

Browse files
committed
[5.3] Resource routes uri translations
1 parent c7b5683 commit e9cb492

File tree

3 files changed

+55
-2
lines changed

3 files changed

+55
-2
lines changed

src/Illuminate/Routing/ResourceRegistrar.php

+33-2
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,16 @@ class ResourceRegistrar
4141
*/
4242
protected static $singularParameters = true;
4343

44+
/**
45+
* Uri translations.
46+
*
47+
* @var array
48+
*/
49+
protected static $uriTranslations = [
50+
'create' => 'create',
51+
'edit' => 'edit',
52+
];
53+
4454
/**
4555
* Create a new resource registrar instance.
4656
*
@@ -290,7 +300,7 @@ protected function addResourceIndex($name, $base, $controller, $options)
290300
*/
291301
protected function addResourceCreate($name, $base, $controller, $options)
292302
{
293-
$uri = $this->getResourceUri($name).'/create';
303+
$uri = $this->getResourceUri($name).'/'.static::$uriTranslations['create'];
294304

295305
$action = $this->getResourceAction($name, $controller, 'create', $options);
296306

@@ -344,7 +354,7 @@ protected function addResourceShow($name, $base, $controller, $options)
344354
*/
345355
protected function addResourceEdit($name, $base, $controller, $options)
346356
{
347-
$uri = $this->getResourceUri($name).'/{'.$base.'}/edit';
357+
$uri = $this->getResourceUri($name).'/{'.$base.'}/'.static::$uriTranslations['edit'];
348358

349359
$action = $this->getResourceAction($name, $controller, 'edit', $options);
350360

@@ -418,4 +428,25 @@ public static function setParameters(array $parameters = [])
418428
{
419429
static::$parameterMap = $parameters;
420430
}
431+
432+
/**
433+
* Get the uri translations.
434+
*
435+
* @return array
436+
*/
437+
public static function getUriTranslations()
438+
{
439+
return static::$uriTranslations;
440+
}
441+
442+
/**
443+
* Set the uri translations.
444+
*
445+
* @param array $translations
446+
* @return void
447+
*/
448+
public static function setUriTranslations(array $translations = [])
449+
{
450+
static::$uriTranslations = array_merge(static::$uriTranslations, $translations);
451+
}
421452
}

src/Illuminate/Routing/Router.php

+11
Original file line numberDiff line numberDiff line change
@@ -247,6 +247,17 @@ public function resourceParameters(array $parameters = [])
247247
ResourceRegistrar::setParameters($parameters);
248248
}
249249

250+
/**
251+
* Set the uri translations.
252+
*
253+
* @param array $translations
254+
* @return void
255+
*/
256+
public function uriTranslations(array $translations = [])
257+
{
258+
ResourceRegistrar::setUriTranslations($translations);
259+
}
260+
250261
/**
251262
* Register an array of resource controllers.
252263
*

tests/Routing/RoutingRouteTest.php

+11
Original file line numberDiff line numberDiff line change
@@ -921,6 +921,17 @@ public function testResourceRouting()
921921

922922
$this->assertEquals('foo-bars/{foo_bar}', $routes[0]->getUri());
923923
$this->assertEquals('prefix.foo-bars.show', $routes[0]->getName());
924+
925+
ResourceRegistrar::setUriTranslations([
926+
'create' => 'ajouter',
927+
'edit' => 'modifier',
928+
]);
929+
$router = $this->getRouter();
930+
$router->resource('foo', 'FooController');
931+
$routes = $router->getRoutes();
932+
933+
$this->assertEquals('foo/ajouter', $routes->getByName('foo.create')->getUri());
934+
$this->assertEquals('foo/{foo}/modifier', $routes->getByName('foo.edit')->getUri());
924935
}
925936

926937
public function testResourceRoutingParameters()

0 commit comments

Comments
 (0)