路线/网络将我路由到另一条路线
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'])->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');
【讨论】:
谢谢你。我也会试试这个方法。以上是关于路线/网络将我路由到另一条路线的主要内容,如果未能解决你的问题,请参考以下文章
将信息从一条路线传递到另一条路线:Flask ignoring redirect requests
Angular 2 - 如何使用 this.router.parent.navigate('/about') 导航到另一条路线?