0

私はlaravelが初めてです。localization.php からデフォルトのロケールを設定し、データ リストの編集ボタンのいずれかをクリックすると、id 変数が (en/ur/sd) のようなロケール値に置き換えられます。

次に、Localization.php からデフォルトのロケール パラメータを削除します。

ill get Missing parameter: about

web.php

Route::group([
    'prefix' => '{locale}', 
    'where' => ['locale' => '[a-zA-Z]{2}'], 
    'middleware' => 'Localization'
    ], function() {


        Route::get('/', function () {
            return redirect(route('home'));
        });
        
Route::resource('/about', AboutController::class)->middleware('auth');
});

カーネル.php

protected $routeMiddleware = [
        'auth' => \App\Http\Middleware\Authenticate::class,
        'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
        'cache.headers' => \Illuminate\Http\Middleware\SetCacheHeaders::class,
        'can' => \Illuminate\Auth\Middleware\Authorize::class,
        'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
        'password.confirm' => \Illuminate\Auth\Middleware\RequirePassword::class,
        'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class,
        'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
        'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class,

        // Permission
        'role' => \Spatie\Permission\Middlewares\RoleMiddleware::class,
        'permission' => \Spatie\Permission\Middlewares\PermissionMiddleware::class,
        'role_or_permission' => \Spatie\Permission\Middlewares\RoleOrPermissionMiddleware::class,
        'Localization' => \App\Http\Middleware\Localization::class,
    ];

ローカリゼーション.php

class Localization
{
    /**
    * Handle an incoming request.
    *
    * @param  \Illuminate\Http\Request  $request
    * @param  \Closure  $next
    * @return mixed
    */
    public function handle(Request $request, Closure $next)
    {        

        URL::defaults(['locale' => $request->segment(1)]);
        app()->setLocale($request->segment(1));
        return $next($request);
        
        
    }
}

Controller.php編集機能について

public function edit($id)
    {
       
        $singleRow = About::find($id); 
        $allRows = About::all();
        return view('about', compact('allRows','singleRow'));
    }

app.php

'locale' => 'en',
'fallback_locale' => 'en',

    'available_locales' => [
         'en',
         'sd',
         'ur',
      ],

about.blade.php 編集データのここをクリックすると編集セクション

app()->getLocale() なしで試してみて、locale パラメータが Localization.php から割り当てられている場合、ID を en、sd、ur などの選択されたロケール言語として置き換えますhttp://127.0.0.1のような URL で指定されたものは何でも:8000/ja/about/1/編集

上記のデフォルトのロケールパラメータで最初の試行

<a href="{{ route('about.edit', ['about' => $about->id]) }}" class="btn btn-primary">Edit</a> 

上記の locale パラメーターなしで 2 回目の試行

<a href="{{ route('about.edit', ['locale'=> app()->getLocale(), 'about' => $about->id]) }}" class="btn btn-primary">Edit</a> 

今回は、上記の Localization.php からデフォルトのロケールを設定し、タグから locale パラメータを削除しました

<a href="{{ route('about.edit', ['about' => $about->id]) }}" class="btn btn-primary">Edit</a> 

編集ボタンをクリックすると、ブラウザにこれが表示されます

戻り値を dd に変更

public function edit($id)
    {
       
        dd($id);
        $singleRow = About::find($id); 
        $allRows = About::all();
        return view('about', compact('allRows','singleRow'));

    }

画像はこちら

今回は、Localization.php の locale パラメータについてコメントし、タグに locale パラメータを追加しました。

<a href="{{ route('about.edit', ['locale'=> app()->getLocale(), 'about' => $about->id]) }}" class="btn btn-primary">Edit</a>

ここに画像の説明を入力

4

1 に答える 1