source

리소스 컨트롤러의 Larabel 명명된 경로

manycodes 2023. 1. 15. 17:17
반응형

리소스 컨트롤러의 Larabel 명명된 경로

Larabel 4.2를 사용하여 자원 컨트롤러 루트에 이름을 할당할 수 있습니까?루트는 다음과 같이 정의됩니다.

Route::resource('faq', 'ProductFaqController');

루트에 다음과 같은 이름 옵션을 추가하려고 했습니다.

Route::resource('faq', 'ProductFaqController', array("as"=>"faq"));

/ /faq 루트를 {{ Route::currentRouteName() }}은 산출된다.faq.faq.index한 것이 faq.

자원 컨트롤러 루트를 사용하면 작성된 개별 경로별로 이름이 자동으로 생성됩니다. Route::resource()는 기본적으로 각 루트를 수동으로 정의할 필요가 없는 개별 루트를 생성하는 도우미 방식입니다.

하려면 , 「Da」라고 입력합니다.php artisan routes 4 라라4 larphp artisan route:listLarabel 5를 터미널/콘솔에 넣습니다.자원 컨트롤러 문서페이지(Laravel 4.x | Laravel 5.x)에서도 생성된 루트명의 유형을 확인할 수 있습니다.

리소스 컨트롤러에 의해 생성된 루트 이름을 변경할 수 있는 방법은 다음 두 가지가 있습니다.

  1. names 파라미터의 를 지정합니다.$options각 키는 자원 컨트롤러 방식(인덱스, 스토어, 편집 등)이며 값은 루트에 지정할 이름입니다.

    Route::resource('faq', 'ProductFaqController', [
        'names' => [
            'index' => 'faq',
            'store' => 'faq.new',
            // etc...
        ]
    ]);
    
  2. 명기해 주세요.as옵션을 지정하여 모든 루트 이름의 프레픽스를 정의합니다.

    Route::resource('faq', 'ProductFaqController', [
        'as' => 'prefix'
    ]);
    

    '하다'와 .prefix.faq.index,prefix.faq.store 등등.

Larabel 5.5+를 사용하는 응답자는 다음 페이지를 참조하십시오.

Route::namespace('Admin')->prefix('admin')->name('admin.')->group(function () {

    Route::resource('users','UserController');

});

이러한 옵션을 사용하면 리소스에 대해 다음과 같은 결과가 됩니다.

  • namespace()를 \Admin으로 User Controller( 컨트롤러)

  • prefix()는 요구 를 /(URI) /admin/users(URI)로 합니다.

  • name() 、 name access 、 [ Route name ]를 「 「 sets 、 [ Route name accessor ]를 설정합니다.route('admin.users.index')

»name()DOT를 사용합니다.

Larabel 5.5 이전 버전에서 이 방법이 효과가 있는지 다른 사람에게 알려주세요.제 답변을 갱신하겠습니다.

업데이트:

Taylor는 5.5에서 이를 공식적으로 문서화하기 위해 내 PR을 수락했습니다.

https://laravel.com/docs/5.5/routing#route-group-name-prefixes


LARAVEL 8 업데이트

8의 으로 Laravel 8을 .namespace 「」는 되지 않습니다.namespace로 in로 RouteServiceProvider의라벨 의라벨 의라벨 표라벨 는라벨이다루트를 할 때 " "는 됩니다.namespace루트를 등록하면 컨트롤러와 루트를 정리할 때 훨씬 자유로워집니다.

Larabel 8에서는, 이 투고의 상부에 기재되어 있는 원래의 예는, 스태틱클래스명에 대한 자기 참조를 사용해 다음과 같습니다.


use \App\Http\Controllers\Admin\{
    UserController,
    ProductController,
    AnotherController,
}

Route::prefix('admin')->name('admin.')->group(function () {

    Route::resource('users', UserController::class);

    Route::resource('products', ProductController::class);

    Route::resource('another', AnotherController::class);

});

Larabel 4.2 (5.7에서 테스트 완료)에서 사용할 수 있는지 모르겠지만,names리소스에 의해 생성된 모든 경로의 이름을 변경합니다.

Route::resource('faq', 'ProductFaqController', ['names' => 'something']);

결과는 이렇게 될 것이다.

something.index

각 루트를 지정할 필요가 없습니다.

모든 업데이트 이후 Larabel 5.5 사용

Route::resource('faqs', 'FaqController', ['as' => 'faqs']);

사용하지 않으면['as' => 'faqs']위의 코드에서도 동일하게 동작합니다.

[갱신 완료]

이것은 「리소스」에 유효하다는 것을 명심하는 것이 중요합니다.

예를 들어 다음과 같습니다.

Route::resource('admin/posts/tags', 'PostTagController', ['as' => 'posts']);

결과는 다음과 같을 것이다.

 POST      | admin/posts/tags                  | posts.tags.store
 GET|HEAD  | admin/posts/tags                  | posts.tags.index
 GET|HEAD  | admin/posts/tags/create           | posts.tags.create
 DELETE    | admin/posts/tags/{tag}            | posts.tags.destroy
 PUT|PATCH | admin/posts/tags/{tag}            | posts.tags.update
 GET|HEAD  | admin/posts/tags/{tag}            | posts.tags.show
 GET|HEAD  | admin/posts/tags/{tag}/edit       | posts.tags.edit

Larabel 8에서 테스트 완료:

리소스 경로의 이름을 선택적 인수로 전달 이름으로 정의할 수 있습니다.예:

use App\Http\Controllers\UsersController;

Route::resource('reservations', UsersController::class, ['names' => 'users']);

위의 예에서는 다음과 같은 루트를 정의하고 있습니다.users.index,users.store기타.

루트명은 다음과 같이 전달할 수도 있습니다.

Route::resource('reservations', UsersController::class, ['names' => 'admin.users']);

prefix가 다음과 같은 루트를 정의합니다.admin예를 들어admin.users.index,admin.users.store

Larabel 5.5 사용

Route::resource('admin/posts/tags', 'PostTagController', ['as' => 'posts']);

'리소스'를 염두에 두는 것이 중요합니다.

예를 들어, 프로젝트에서 다음과 같은 내용을 보냅니다.

Route::resource('admin/posts/tags', 'PostTagController', ['as' => 'posts']);

인 라라벨 8

Route::resource('product', 
    App\Http\Controllers\API\Admin\ProductController::class, [
    'names' => [
        'index' => 'admin.product.index', 
        'store' => 'admin.product.store', 
        'update' => 'admin.product.update', 
        'destroy' => 'admin.product.delete'
    ]
])->except(['edit', 'create']);

루트::resource('articles', 'ArticleController', ['names' => 'xyz'])

당신은 내가 테스트하는 5.7의 리소스에 이름을 설정할 필요가 없습니다.그것은 url로부터 루트 이름을 자동으로 생성합니다.

당신과 같은 에러가 발생했습니다.저는 네임스페이스/ControllerName 경로 전체를 추가함으로써 동작했습니다.

루트::resource('스태프', '앱\Http\Controllers\StaffController');

이름을 변경할 수 있습니다.resource routesAppServiceProvider.php다음과 같이 합니다.

public function boot()
{
    Route::resourceVerbs([
        'create' => 'neu',
        'edit' => 'bearbeiten',
    ]);
}

이 기능은 다음 사용자를 위해 설계된 것으로 알고 있습니다.localization.

언급URL : https://stackoverflow.com/questions/25290229/laravel-named-route-for-resource-controller

반응형