diff --git a/src/Illuminate/Routing/ResourceRegistrar.php b/src/Illuminate/Routing/ResourceRegistrar.php index 3437542d29cd..e9cbfd24bb4f 100644 --- a/src/Illuminate/Routing/ResourceRegistrar.php +++ b/src/Illuminate/Routing/ResourceRegistrar.php @@ -41,6 +41,16 @@ class ResourceRegistrar */ protected static $singularParameters = true; + /** + * Uri translations. + * + * @var array + */ + protected static $uriTranslations = [ + 'create' => 'create', + 'edit' => 'edit', + ]; + /** * Create a new resource registrar instance. * @@ -290,7 +300,7 @@ protected function addResourceIndex($name, $base, $controller, $options) */ protected function addResourceCreate($name, $base, $controller, $options) { - $uri = $this->getResourceUri($name).'/create'; + $uri = $this->getResourceUri($name).'/'.static::$uriTranslations['create']; $action = $this->getResourceAction($name, $controller, 'create', $options); @@ -344,7 +354,7 @@ protected function addResourceShow($name, $base, $controller, $options) */ protected function addResourceEdit($name, $base, $controller, $options) { - $uri = $this->getResourceUri($name).'/{'.$base.'}/edit'; + $uri = $this->getResourceUri($name).'/{'.$base.'}/'.static::$uriTranslations['edit']; $action = $this->getResourceAction($name, $controller, 'edit', $options); @@ -418,4 +428,25 @@ public static function setParameters(array $parameters = []) { static::$parameterMap = $parameters; } + + /** + * Get the uri translations. + * + * @return array + */ + public static function getUriTranslations() + { + return static::$uriTranslations; + } + + /** + * Set the uri translations. + * + * @param array $translations + * @return void + */ + public static function setUriTranslations(array $translations = []) + { + static::$uriTranslations = array_merge(static::$uriTranslations, $translations); + } } diff --git a/src/Illuminate/Routing/Router.php b/src/Illuminate/Routing/Router.php index 299af7d6d4d6..621037826f8b 100644 --- a/src/Illuminate/Routing/Router.php +++ b/src/Illuminate/Routing/Router.php @@ -247,6 +247,17 @@ public function resourceParameters(array $parameters = []) ResourceRegistrar::setParameters($parameters); } + /** + * Set the uri translations. + * + * @param array $translations + * @return void + */ + public function uriTranslations(array $translations = []) + { + ResourceRegistrar::setUriTranslations($translations); + } + /** * Register an array of resource controllers. * diff --git a/tests/Routing/RoutingRouteTest.php b/tests/Routing/RoutingRouteTest.php index 700e8ae5e86f..3d37b54a8c1d 100644 --- a/tests/Routing/RoutingRouteTest.php +++ b/tests/Routing/RoutingRouteTest.php @@ -921,6 +921,17 @@ public function testResourceRouting() $this->assertEquals('foo-bars/{foo_bar}', $routes[0]->getUri()); $this->assertEquals('prefix.foo-bars.show', $routes[0]->getName()); + + ResourceRegistrar::setUriTranslations([ + 'create' => 'ajouter', + 'edit' => 'modifier', + ]); + $router = $this->getRouter(); + $router->resource('foo', 'FooController'); + $routes = $router->getRoutes(); + + $this->assertEquals('foo/ajouter', $routes->getByName('foo.create')->getUri()); + $this->assertEquals('foo/{foo}/modifier', $routes->getByName('foo.edit')->getUri()); } public function testResourceRoutingParameters()