Не переписывайте генератор ссылок с маршрутом dinami c - PullRequest
0 голосов
/ 01 апреля 2020

В моем коде я создал маршрут с префиксом, этот префикс является курсом курсов.

Route::prefix('{course_slug}')->middleware('courses')->group(function () { ...

URL-адрес такой:

http://127.0.0.1/class/php/exams

Все в порядке, но теперь мне нужно переписать мои взгляды с параметром, конечно.

route('class.exams.index', ['course' => 'php'])

Мой вопрос, возможно, не переписать мои взгляды? Есть возможность ввести параметр курса в ссылку для генерации и не изменять код в представлении?

Тогда оставьте код таким.

route('class.exams.index')

1 Ответ

0 голосов
/ 02 апреля 2020

Я нашел решение своей проблемы. Решение описано в этом посте: https://laracasts.com/discuss/channels/laravel/default-route-parameters?page=1#reply = 426656

Решение, в моем случае, было в Middleware установить параметр по умолчанию

namespace App\Http\Middleware;

use Illuminate\Contracts\Routing\UrlGenerator;

class SetRouteDomain
{
    private $url;

    public function __construct(UrlGenerator $url)
    {
        $this->url = $url;
    }

    public function handle($request, Closure $next)
    {
        $course_default = Course::getDefault();

        $this->url->defaults([
            'course_slug' => isset($request->course_slug) ? $request->course_slug : $course_default->slug,
        ]);

        return $next($request);
    }
}

Тогда Мне не нужно было менять взгляды.

...