Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 拥有多个Slug的Laravel路线赢得';我不在办公室工作_Php_Reactjs_Laravel_React Router_Laravel Routing - Fatal编程技术网

Php 拥有多个Slug的Laravel路线赢得';我不在办公室工作

Php 拥有多个Slug的Laravel路线赢得';我不在办公室工作,php,reactjs,laravel,react-router,laravel-routing,Php,Reactjs,Laravel,React Router,Laravel Routing,我有一个带有Laravel后端/React.js前端的应用程序。我正在使用react路由器,以便使其工作,我有任何指向控制器的路径,该控制器加载视图中的组件。但是,当我在react端添加嵌套路由(即“blog/:blogId”)时,它似乎完全跳过了加载组件的标记,而是从Laravel视图向我显示内容 我最初有: `Route::get('/{slug?}', 'ProjectsController@index'` 我试过: `Route::any('{path}', function($pat

我有一个带有Laravel后端/React.js前端的应用程序。我正在使用react路由器,以便使其工作,我有任何指向控制器的路径,该控制器加载视图中的组件。但是,当我在react端添加嵌套路由(即“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
,用于加载带有react标记的视图

ProjectsController中“我的索引”函数中的数据为:

  `$projects = Project::all();
    $posts = Post::all();

    //return $projects;
    return view('welcome', compact('projects', 'posts'));`
以前有人见过这个吗?谢谢

更新:

控制器索引方法返回的欢迎视图:

是我的基本组件加载到的位置。因此,当导航到路由“/blog”时,我会看到我的组件,当导航到“/blog/anywhere”时,我会看到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`
`@extends('layout'))
@节(“内容”)
@if(Route::has('login'))
@if(Auth::check())
@否则
@恩迪夫
@恩迪夫
@包括('partials.\u scripts')
@端部`
使用链接的组件:

`<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路径与其他路径一起放在基本应用程序中-仍然没有区别

更新:

从react router中删除/blog/route标记并仅保留“/blog/:blogId”时,它具有相同的效果

更新/部分解决:

(\\d+)
添加到我的react路由器路径:path={
/blog/:id(\\d+)
}正确地将我带到嵌套组件。不过,它也加载了刀片视图内容,因此作为临时修复,我取出了显示的刀片内容。如果有人有别的办法,那就太好了。谢谢。

试试这个

Route::get('/{any}', 'ProjectController@index')->where('any', '.*');
这基本上添加到routes/web.php的末尾,因为您很可能正在尝试构建SPA,并且希望所有http请求都由react路由器处理

更新: 根据您的更新,我了解到您希望
/blog
/blog/:ID
采用相同的方法处理。可以这样做

Route::get('blog/{id?}', 'ProjectController@index')->where('id', '[0-9]+');
如果需要index方法中的ID,请将其作为该方法的第一个参数,并将其发送到视图

试试这个

Route::get('/{any}', 'ProjectController@index')->where('any', '.*');
这基本上添加到routes/web.php的末尾,因为您很可能正在尝试构建SPA,并且希望所有http请求都由react路由器处理

更新: 根据您的更新,我了解到您希望
/blog
/blog/:ID
采用相同的方法处理。可以这样做

Route::get('blog/{id?}', 'ProjectController@index')->where('id', '[0-9]+');

如果需要index方法中的ID,请将其作为该方法的第一个参数,并将其发送到视图

如果您想要blog/:blogId句柄由laravel route处理?Hi@aseferov,这并不是我想要它由laravel route处理,而是我需要将任何路径(包括它们的子路径)指向处理我的组件的视图,以便react工作。因此,如果我想要blog:/blogId,我需要告诉laravel routes也将这些路径指向视图。请添加视图部分,在其中导航用户blog/:blogIdcomponent@aseferov请参阅上面更新的内容您需要更改react链接组件如果您想要blog/:blogId handles by laravel route?Hi@aseferov,这并不是我希望它由laravel route处理,而是我需要将任何路径(包括它们的子路径)指向处理我的组件的视图,以便对工作做出反应。因此,如果我想要blog:/blogId,我需要告诉laravel routes也将这些路径指向视图。请添加视图部分,在其中导航用户blog/:blogIdcomponent@aseferov请参阅上面更新的内容,您需要更改以响应链接组件,这会给我相同的结果,它只在我返回控制器方法中的数据时起作用,而在我返回视图时不起作用。当我返回一个视图并导航到/blog/2时,它会返回blade.php数据。当我返回视图并导航到just/blog时,它将加载前端组件。请参阅上面更新的问题,了解我的控制器函数中的内容。我尝试了建议的更新方法-相同的结果,我甚至将id传递给组件,并特别告诉它导航到/blog/id,id是控制器中的变量,但什么都没有。这给了我相同的结果,它只在我返回控制器方法中的数据时起作用,而在我返回视图时不起作用。当我返回一个视图并导航到/blog/2时,它会返回blade.php数据。当我返回视图并导航到just/blog时,它将加载前端组件。请参阅上面更新的问题,了解我的控制器函数中的内容。我尝试了建议的更新方法-同样的结果,我甚至将id传递给组件,并特别告诉它导航到/blog/id,id是控制器中的变量,但什么都没有。