路线/网络将我路由到另一条路线

Posted

技术标签:

【中文标题】路线/网络将我路由到另一条路线【英文标题】:routes/web route me to another route 【发布时间】:2021-12-29 00:58:30 【问题描述】:

我的网站似乎没有指向正确的页面。

这是我的刀

<div class="container">
    <div class="col-lg-12 d-flex justify-content-between align-items-center">
        <h2>Informations</h2>
        <a href=" route('add-new-information') " class="btn text-success">
            <i class="fas fa-plus-circle fa-2x"></i>
        </a>
    </div>
    <hr>
    <div class="row d-flex justify-content-center align-items-center mt-5" style="max-height: 500px !important; overflow-y: scroll">
        @foreach ($informations as $info)
            <div class="card col-sm-11 p-0 mb-4 clickable-item" onclick='window.location = " route('admin-informations', ['id' => $info->id]) "'>
                ...
            </div>
        @endforeach
    </div>
</div>

这是我的路线/网络

Auth::routes();

Route::group(['middleware' => ['auth'], 'prefix' => '/',], function () 
    Route::get('/', function () 
        return redirect('/home');
    );

    Route::group(['prefix' => 'admin'], function() 
        Route::get('/informations', [App\Http\Controllers\InformationController::class, 'index'])->name('informations');
        Route::get('/informations/id', [App\Http\Controllers\InformationController::class, 'indexAdminInfo'])->name('admin-informations');
        Route::get('/informations/add-new-information', [App\Http\Controllers\InformationController::class, 'add'])->name('add-new-information');
    );

);

这是我的控制器

    public function indexAdminInfo($id)
        $information = Information::find($id);
        // $comments = Comment::where('information_id', $id)->orderByDesc('created_at')->get();
        $ack_count = Acknowledge::where('information_id', $id)->count();
        $user_ack = Acknowledge::where([
            ['information_id', '=', $id],
            ['user_id', '=', Auth::user()->id],
        ])->first();
        $ack = 'FALSE';
        
        if($user_ack != null)
            $ack = 'TRUE';
        

        return view('adminviews/infoadmin', compact('information', 'ack_count', 'ack', 'user_ack'));
    

    public function add()
        return view('adminviews/addinfo');
    

由于某种原因,当我单击带有href route('add-new-information') 的a 标记以转到添加页面'adminviews/addinfo' 时,

页面将转到'adminviews/infoadmin' page,这将导致错误,因为没有发送任何参数。

我尝试检查代码,但它看起来对我来说是正确的。有人能找到这个错误吗?

【问题讨论】:

您是否尝试将链接更改为/admin/informations/add-new-information?当你点击它时会发生什么? 我可以看到如果你点击` route('add-new-information') `它会出现adminviews/addinfo。没有任何问题 @fufubrocat 将 href 设置为 /admin/informations/add-new-information 仍会尝试转到“adminviews/infoadmin”刀片。 @A.ANoman。是的,它应该转到 addinfo 刀片,但事实并非如此。我尝试查看它并在终端中通过 php artisan 优化,但我仍然被定向到 infoadmin 刀片。 @Tim Sobrecarey 你能不能先禁用Route::get('/informations/add-new-information', [App\Http\Controllers\InformationController::class, 'add'])-&gt;name('add-new-information');,然后改用Route::get('/admin/informations/add-new-information', 'InformationController@add'): 【参考方案1】:

问题在于您的路线: 这两条路线不明确:

Route::get('/informations/id');
Route::get('/informations/add-new-information');

想想下面的场景:

路由器要路由,这个url:/information/add-new-information

路由器会命中第一个定义的路由,因为它与定义兼容 ('/informations/id')

注意:id是一个变量,可以是任意字符串

这样就可以了。

解决方案

先写比较受限的路线,

以后还有更一般的路线:

Route::get('/informations/add-new-information');
Route::get('/informations/id');

【讨论】:

谢谢你。我也会试试这个方法。

以上是关于路线/网络将我路由到另一条路线的主要内容,如果未能解决你的问题,请参考以下文章

在成功的异步 redux 操作上转换到另一条路线

如何以角度将数据从一条路线传输到另一条路线? [复制]

将信息从一条路线传递到另一条路线:Flask ignoring redirect requests

导航到另一条路线后如何使用 Provider?

Angular 2 - 如何使用 this.router.parent.navigate('/about') 导航到另一条路线?

提交表单 Laravel 后重定向到不同的路由