Abylay Omar
Abylay Omar

Reputation: 95

Missing required parameters for [Route: tender_detail] Locale Laravel

Got an error after adding localization to my laravel project. Here is my web.php

//Tender
Route::group(['prefix' => '{language}/tender', 'middleware' => ['permission:tender-page']], function() {
    Route::get('/', 'TenderController@index')->name('tender');
    Route::get('/add', 'TenderController@add')->name('tender_add');
    Route::get('/{id}', 'TenderController@detail')->name('tender_detail');
});

Here is my error

ErrorException thrown with message:
"Missing required parameters for [Route: tender_detail] [URI: {language}/tender/{id}]. 
(View: /Users/admin/Desktop/dev/medicare/resources/views/layouts/template.blade.php) 
(View: /Users/admin/Desktop/dev/medicare/resources/views/layouts/template.blade.php)"

Here is part of my template.blade.php

<li class="{{ Request::is('tender*') ? 'active' : '' }}">
<a href="{{ route('tender', ['language' => app()->getLocale()]) }}">
<i class="notika-icon notika-house"></i> {{ __('tender') }} </a>
</li>

Here is route to the tender_detail page

<a href="{{ route('tender_detail', ['language' => app()->getLocale(), 'id' => 1])}}">ЛОТ 123456-ОК3</a>

Upvotes: 0

Views: 639

Answers (3)

Abylay Omar
Abylay Omar

Reputation: 95

The problem was in my language changer links.
`

<li class="nav-item">
   <a href="{{ route(Route::currentRouteName(), 'ru') }}" class="nav-link">RU</a>
 </li>
 <li class="nav-item">
   <a href="{{ route(Route::currentRouteName(), 'tr') }}" class="nav-link">TR</a>
 </li>

`

when i delete this links, routes start work

Upvotes: 1

Software Developer
Software Developer

Reputation: 868

This edit will change change your urls alittle but i think it will work Edit

Route::group(['prefix' => '{language}/tender', 'middleware' => ['permission:tender-page']], function() {
        Route::get('/', 'TenderController@index')->name('tender');
        Route::get('/add', 'TenderController@add')->name('tender_add');
        Route::get('/{id}', 'TenderController@detail')->name('tender_detail');
    });

To this

Route::group(['prefix' => 'tender', 'middleware' => ['permission:tender-page']], function() {
        Route::get('/{language}/', 'TenderController@index')->name('tender');
        Route::get('/{language}/add', 'TenderController@add')->name('tender_add');
        Route::get('/{language}/{id}', 'TenderController@detail')->name('tender_detail');
    });

then try something like this

<a href="{{ route('tender_detail', ['language' => app()->getLocale(), 'id' => 1])}}">ЛОТ 123456-ОК3</a>

Upvotes: 0

Software Developer
Software Developer

Reputation: 868

Try changing from

<a href="{{ route('tender', ['language' => app()->getLocale()]) }}">

to something like

<a href="{{ route('tender', ['language' => app()->getLocale(), 'id' => 'your-tender-id']) }}">

provide your tender-id in the route method

Upvotes: 0

Related Questions