Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/238.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 使用按钮或复选框保存laravel 5.3中的多对多关系时出现的问题_Php_Laravel 5.3 - Fatal编程技术网

Php 使用按钮或复选框保存laravel 5.3中的多对多关系时出现的问题

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

我在多对多关系表的透视中保存时遇到问题。在我的应用程序中,我有一系列有许多任务的项目。对于具有任务的特定项目,我希望auth用户能够分配想要的任务

这是我的模型

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)