Php 使用按钮或复选框保存laravel 5.3中的多对多关系时出现的问题
我在多对多关系表的透视中保存时遇到问题。在我的应用程序中,我有一系列有许多任务的项目。对于具有任务的特定项目,我希望auth用户能够分配想要的任务 这是我的模型Php 使用按钮或复选框保存laravel 5.3中的多对多关系时出现的问题,php,laravel-5.3,Php,Laravel 5.3,我在多对多关系表的透视中保存时遇到问题。在我的应用程序中,我有一系列有许多任务的项目。对于具有任务的特定项目,我希望auth用户能够分配想要的任务 这是我的模型 public function tasks(){ return $this->belongsToMany('App\Task', 'user_task'); } } 在用户模型中 public function users(){ return $this->belongsTo
public function tasks(){
return $this->belongsToMany('App\Task', 'user_task');
}
}
在用户模型中
public function users(){
return $this->belongsToMany('App\User', 'user_task');
}
任务内模型
foreach($project->tasks as $task)
<form role="form" method="POST" action="{{ route('tasks.assign', ['taskId'=>$task->id]) }}">
{{-- <button class="btn btn-sm btn-success">
<span class="glyphicon glyphicon-star-empty" aria-hidden="true"></span>
</button> --}}
{{ csrf_field() }}
<div class="checkbox">
<label>
<input type="checkbox"> {{ $task->name }}
</label>
<label> <p>{{ $task->description }}</p></label>
</div>
@endforeach
<input class = "btn btn-success" type="submit" value="Submit">
</form>
我还想提一下,我对laravel非常陌生,所以这个项目是我的第一个laravel项目(我使用laravel 5.3)我要在您的设置中验证的第一件事是,您在路线、post表单和控制器方法中使用了相同的“任务”变量。现在,您似乎正在尝试将名为
$taskId
的变量传递到路由:
<form role="form" method="POST" action="{{ route('tasks.assign', ['taskId'=>$task->id]) }}">
查看路由定义将有助于进一步调试
还有一点额外的建议:
我还要清理的一件事是删除复选框,原因有两个:1)看起来它没有“name”属性,因此不会向服务器发送任何内容;2) 看起来您的表单只提交了一个任务,这是通过route/url完成的,因此不需要额外的控件,只需要任务名称和提交按钮
因此,在这种情况下,一个简单的GET表单就足够了。尝试在joinTask方法中使用
dd($task)
来查看您获取的数据。我接受了您的建议,只使用了按钮(而不是复选框),现在它工作得非常好,谢谢,问题是在路由中发送了taskId,我不再使用它,我用task更改了它,它是ok Route::post('vapp/assignTask/{task}',['as'=>'tasks.assign','uses'=>'TaskController@joinTask']);
<form role="form" method="POST" action="{{ route('tasks.assign', ['taskId'=>$task->id]) }}">
public function joinTask(Request $request, Task $task)