我有ProjectController
可以从数据库中获取数据并将其传递给刀片文件。数据项之一是project_id
。我想将project _id
从刀片文件传递到另一个控制器BidController
。
ProjectController.php
public function show($id)
{
$project = Project::find($id);
return view('project.show',['project'=>$project]);
}
show.blade.php
div class="card-header">PROJECT <p>{!! $project->id !!}</p></div>
BidController.php
public function store(Request $request)
{
$bid = new Bid;
$bid->project_id = $project_id;
dd($project_id);
}
dd();
不输出project_id
。在将project_id
从刀片文件传递到BidController
方法时,我需要帮助。
答案 0 :(得分:0)
您可以通过Javascript发送AJAX
请求:
查看
<script type="text/javascript">
var project_id= {!! json_encode($project->id) !!}
$.ajax({
type: 'POST',
url: url, //Your bidController route
data: {project_id: project_id},
error: function (jqXHR, textStatus, errorThrown) {
console.log(errorThrown)
},
success: function()
{
console.log('successful')
}
});
</script>
这会将数据异步发送到控制器,从而不会影响用户体验。
还有一点:在Bid控制器中,由于project_id
来自请求,因此您必须使用:
$bid->id = $request->project_id;
希望对您有帮助!
PS:我正在为此使用JQuery,因此如果您还没有JQuery,则必须包括它。
答案 1 :(得分:0)
id
行中那样直接设置模型的$bid->id = $project_id;
。您是否要建立关系?那应该更像$bid->project_id = $request->project_id;
。如果您想创建一个按钮来为现有项目创建新的出价,则可以执行类似的操作,例如使用隐藏字段“ project_id”将表单回传到路由的“ / bids” 'bids.store'。您将在$request->project-id'
下找到“ project_id”。
答案 2 :(得分:0)
我认为这可以解决您的问题:
ProjectController.php
public function show($id)
{
$project = Project::findOrFail($id);
return view('project.show',compact('project');
}
web.php
Route::post('/bids/store/{id}' , 'BidController@store')->name('bids.store');
show.blade.php
div class="card-header">PROJECT <p>{{$project->id}}</p></div>
<form action="{{route('bids.store', $project->id)}}" method="post">
BidController.php
public function store(Request $request, $id)
{
$bid = new Bid;
$bid->id = $id;
$bid->save();
dd($id);
}