Laravel many-to-many 关系中的附件
Attachment in Laravel many-to-many relation
我正在尝试进行第一次依恋/分离。我正在使用两个表、用户、事件及其数据透视表 event_user。对于这个,我需要做一个按钮来让用户订阅一个事件,所以我的老师告诉我使用一个并将它路由到订阅方法。这时,出现的错误是。
Route [subscribe] not defined.
Blade
<a href="{{ route('subscribe', $event->event_id) }}"
class="btn btn-primary btn-lg">Subscribe</a>
路线
Route::get('/subscribe', [SubscribeController::class, 'index']);
订阅控制器
public function index($id)
{
$user = Auth::user();
$user->events->attach($id);
return view('index');
}
我尝试将 URL 而不是路由放在 中,它会转到 /subscribe,但会出现一个错误,显示 -> 传递给函数 0 的参数太少,而预期恰好是 1。
我在组件中做了一个 dd()
来查看事件 ID 是否正确,事实确实如此。另外,除了这些错误之外,如何在不更改路由的情况下路由方法?我可以使用 indexController 来实现吗(因为它位于这些事件所在的索引中)?
首先,为了通过名称引用路由,您需要为其命名 subscribe
。
文档:https://laravel.com/docs/master/routing#named-routes
其次,您想添加您尝试在控制器中使用的 id
路由参数。
文档:https://laravel.com/docs/master/routing#required-parameters
所以你的路线最终应该是这样的:
Route::get('/subscribe/{id}', [SubscribeController::class, 'index'])
->name('subscribe');
然后你会想这样称呼它:
<a href="{{ route('subscribe', ['id' => $event->event_id]) }}"
首先,在您的 blade 视图文件中,您尝试使用这样的 route
帮助程序生成 url
<a href="{{ route('subscribe', $event->event_id) }}"
class="btn btn-primary btn-lg">Subscribe</a>`
你调用 route
帮助程序的方式我们可以这样认为
- 您已经在
web.php
文件中定义了一个名为 subscribe
的路由
- 那条路线有参数
但是在你的 web.php
文件中你有这条路线
Route::get('/subscribe', [SubscribeController::class, 'index']);
- 这条路线没有任何名字。
- 它不需要任何参数
要解决这个问题,您应该只更改在 web.php
文件中定义路由的方式,如下所示
Route::get('/subscribe/{id}', [SubscribeController::class, 'index'])
->name('subscribe');
我们定义这条路线:
id
作为必需参数
- 路由命名为subscribe
我正在尝试进行第一次依恋/分离。我正在使用两个表、用户、事件及其数据透视表 event_user。对于这个,我需要做一个按钮来让用户订阅一个事件,所以我的老师告诉我使用一个并将它路由到订阅方法。这时,出现的错误是。
Route [subscribe] not defined.
Blade
<a href="{{ route('subscribe', $event->event_id) }}"
class="btn btn-primary btn-lg">Subscribe</a>
路线
Route::get('/subscribe', [SubscribeController::class, 'index']);
订阅控制器
public function index($id)
{
$user = Auth::user();
$user->events->attach($id);
return view('index');
}
我尝试将 URL 而不是路由放在 中,它会转到 /subscribe,但会出现一个错误,显示 -> 传递给函数 0 的参数太少,而预期恰好是 1。
我在组件中做了一个 dd()
来查看事件 ID 是否正确,事实确实如此。另外,除了这些错误之外,如何在不更改路由的情况下路由方法?我可以使用 indexController 来实现吗(因为它位于这些事件所在的索引中)?
首先,为了通过名称引用路由,您需要为其命名 subscribe
。
文档:https://laravel.com/docs/master/routing#named-routes
其次,您想添加您尝试在控制器中使用的 id
路由参数。
文档:https://laravel.com/docs/master/routing#required-parameters
所以你的路线最终应该是这样的:
Route::get('/subscribe/{id}', [SubscribeController::class, 'index'])
->name('subscribe');
然后你会想这样称呼它:
<a href="{{ route('subscribe', ['id' => $event->event_id]) }}"
首先,在您的 blade 视图文件中,您尝试使用这样的 route
帮助程序生成 url
<a href="{{ route('subscribe', $event->event_id) }}"
class="btn btn-primary btn-lg">Subscribe</a>`
你调用 route
帮助程序的方式我们可以这样认为
- 您已经在
web.php
文件中定义了一个名为subscribe
的路由
- 那条路线有参数
但是在你的 web.php
文件中你有这条路线
Route::get('/subscribe', [SubscribeController::class, 'index']);
- 这条路线没有任何名字。
- 它不需要任何参数
要解决这个问题,您应该只更改在 web.php
文件中定义路由的方式,如下所示
Route::get('/subscribe/{id}', [SubscribeController::class, 'index'])
->name('subscribe');
我们定义这条路线:
id
作为必需参数- 路由命名为subscribe