У меня есть приложение с интерфейсом Laravel back-end / React.js.Я использую реагирующий маршрутизатор, поэтому для его работы у меня есть любой путь, указывающий на контроллер, который загружает представление с компонентами в них.Однако, когда я добавляю вложенные маршруты на стороне реакции, то есть «blog /: blogId», кажется, что он полностью пропускает тег, в который загружаются компоненты, и вместо этого показывает содержимое из представления Laravel.
Первоначально яимел:
`Route::get('/{slug?}', 'ProjectsController@index'`
Я пробовал:
`Route::any('{path}', function($path){
$projects = Project::all();
$posts = Post::all();
return view('welcome', compact('projects', 'posts'));
})->where('path', '.*');`
Это тоже не сработает:
`Route::get('/{slug?}/{id?}', 'ProjectsController@index'`
То, что я хочу, для обоих /blog
и / blog/2
чтобы перейти к ProjectsController@index
, который загружает представление с тегом реагирования.
Данные в моей индексной функции в ProjectsController:
`$projects = Project::all();
$posts = Post::all();
//return $projects;
return view('welcome', compact('projects', 'posts'));`
Кто-нибудь сталкивался с этимдо?Спасибо.
ОБНОВЛЕНО:
Приветственное представление, возвращаемое методом индекса контроллера:
В <div id="content"></div>
находится мой базовый компонентзагружен в.Таким образом, при переходе к маршруту «/ blog» я вижу свой компонент, при переходе к «/ blog / что-либо» я вижу логин и регистрационные ссылки Laravel.
`@extends('layout')
@section('content')
@if (Route::has('login'))
<div class="top-right links">
@if (Auth::check())
<a href="{{ url('/home') }}">Home</a>
@else
<a href="{{ url('/login') }}">Login</a>
<a href="{{ url('/register') }}">Register</a>
@endif
</div>
@endif
<div id="content"></div>
@include('partials._scripts')
@endsection`
Компонент, использующий ссылку:
`<a href={`/blog/${item.id}`} target="_blank">View here</a>
<Route path="/blog/:blogId" component={Post} />`
Мои другие маршруты в базовом компоненте:
`<Switch>
<Route exact path="/" render={(props)=> <Home text={text} mobileNavIsOpen={hamburgerOpen} backgroundImage={background}/>} />
<Route path="/projects" component={Projects} />
<Route path="/blog" component={Blog} />
<Route component={NotFound} />
</Switch>`
Я пытался разместить маршрут / blog /: blogId в базовом приложении вместе с другими - все равно без разницы.
ОБНОВЛЕНИЕ:
При удалении тега / blog / route из маршрутизатора реагирования и сохранении / blog /: blogId это имеет тот же эффект.
ОБНОВЛЕНИЕ / ЧАСТИЧНО РЕШЕНО:
Добавление (\\d+)
в мой путь реагирующего маршрутизатора: путь = {/blog/:id(\\d+)
} правильно перенес меня во вложенный компонент.Тем не менее, он также загружал содержимое блэйд-представления, поэтому в качестве временного исправления я удалил отображаемый контент блэйдов.Было бы хорошо видеть, есть ли у кого-то другой способ обойти это.Спасибо.