Laravel:翻译资源URL

时间:2014-10-19 12:21:49

标签: php laravel routes crud

在Laravel中创建资源控制器时,如下所示:

Route::resource('foo', 'FooController');

我们获得以下网址:

  • 富/创建
  • FOO /存储
  • 富/ {ID} /编辑
  • 富/ {ID} /更新
  • ...

我想翻译其中的一些路线,以获得类似的内容:

  • 富/的风格
  • FOO /存储
  • 富/ {ID} /的改性剂
  • 富/ {ID} /更新

此代码正常运行:

Route::resource('foo', 'FooController', array(
    'names' => array(
        'create'    => 'nouveau',
        'edit'      => 'modifier',
        ...
    )
));

此处的问题是edit路线:我不知道如何使其与{id} foo/{id}/modifier一起使用。

4 个答案:

答案 0 :(得分:1)

查看我的包裹:https://github.com/doitonlinemedia/TranslatableRoutes非常易于使用。

您可以调用以下资源路径:

TranslatableRoute::resource('recipe', 'recepten', 'RecipeController');

第二个参数是翻译名称,第一个参数定义路线名称。

答案 1 :(得分:0)

据我所知,使用resource方法无法实现。您需要使用trans / Lang::get手动创建这些路径,例如:

Route::get('foo/{id}/'.trans('routes.edit'), 'FooController@edit');

您可以在第3个参数中传递的名称是针对命名路线的,并且与网址没有任何共同之处,如果您使用的是指定的路线,如您所示,您现在可以使用:

URL::route('nouveau', 1);

它会生成foo/1/edit个网址。如果你没有使用这里的名字,你应该使用:

URL::route('foo.edit',1);

创建此网址,但这是唯一的区别,此处没有网址影响。

答案 2 :(得分:0)

此答案基于Laravel文档,网址为https://laravel.com/docs/5.7/controllers#restful-localizing-resource-uris

本地化资源URI

默认情况下,Route::resource将使用英语动词创建资源URI。如果您需要对createedit动作动词进行本地化,则可以使用Route::resourceVerbs方法。这可以通过您的boot的{​​{1}}方法来完成:

AppServiceProvider

自定义动词后,诸如Route :: resource('foo','FooController')之类的资源路由注册将产生以下URI:

use Illuminate\Support\Facades\Route; /** * Bootstrap any application services. * * @return void */ public function boot() { Route::resourceVerbs([ 'create' => 'nouveau', 'edit' => 'modifier', ]); }

/foo/nouveau

答案 3 :(得分:-1)

我相信你只是错过了路线上的命名空间。当Laravel生成资源时,它也会创建命名空间。因此,foo.create代替foo.nouveau,而不是Route::resource('foo', 'FooController', array( 'names' => array( 'create' => 'foo.nouveau', 'edit' => 'foo.modifier' ) ));

{{1}}

这在Laravel文档中也可以是referenced here