当用户访问某个品牌页面时,我会拉出与该品牌相关的信息。然后,用户就有机会提交该品牌的申请。
用户提交表单时,我希望将表单发布到/apply/brand/{brand_id}
,因为我想将此应用程序存储在我的应用程序表中,其中brand_id
作为字段之一(其他字段为该表来自我表单中的字段,但是brand_id
将是URL参数)
问题在于,当我提交表单时,表单会发布到 / apply / brand / undefined ,并且提交无法正常工作。我没有达到ApplicationController@apply_store
方法。
编辑: 为了调试我的问题,我在元素之前打印了{{$ brand-> id}},并很好地打印了出来。但是,提交表单时,它会转到/ apply / brand / undefined而不是/ apply / brand / {{$ brand-> id}}。 $ brand变量在我的表单中以某种方式变得不确定。
编辑: 我对from进行了硬编码,以提交到/ apply / brand / 43。当我按Submit时,URL最初显示为/ apply / brand / 43,但随后迅速更改为/ apply / brand / undefined,然后将我重定向到默认页面。
访问品牌页面的控制器方法
public function brandProfile(){
$brand = Brand::where('user_id', Auth::user()->id)->first();
$industry = Industry::where('status', 1)->get();
return view('new-design.pages.profile_brand')
->withData($brand)
->withIndustry($industry);
}
品牌申请表
<form id="application_form" method="post" action="/apply/brand/{{ $data -> id }}" enctype="multipart/form-data">
{{ csrf_field() }}
<ul>
<div class="col-md-6">
<li>
<label>First Name</label>
<input type="text" class="form-control" name="firstname" placeholder="First Name"/>
</li>
</div>
<div class="col-md-6">
<li>
<label>Last Name</label>
<input type="text" class="form-control" name="lastname" placeholder="Last Name"/>
</li>
</div>
<div class="col-md-6">
<li>
<label>Email</label>
<input type="email" class="form-control" name="email" placeholder="Email"/>
</li>
</div>
<div class="col-md-6">
<li>
<label>Instagram Handle</label>
<input type="text" class="form-control" name="instagram" placeholder="Instagram Handle"/>
</li>
</div>
<li>
<label>Cover Letter</label>
<p>Please write your message in the space below, or attach a file (-list of file types accepted-)</p>
<textarea cols="30" rows="50" name="message" class="textarea"></textarea>
</li>
<li>
<div class="upload-cover-letter">
<i class="fa fa-paperclip" style="cursor:pointer;font-size:20px;"></i>
<input type="file" name="file" id="myFileDocument" class="inputfile inputfile-1"/>
<label for="myFileDocument" id="myFileDoc"><span>Choose File</span></label>
<span style="font-size: 12px">No File Chosen</span>
<span class='hidden_text' style="font-size: 12px">Upload File (Max 2MB)</span>
</div>
<input type="hidden" id="myFileName" name="file_name" />
</li>
</ul>
<div class="btn-center">
<button type="button" class="btn btn-gradient waves-effect" id="create_campaign">Apply Now</button>
</div>
</form>
在web.php中路由
Route::post('/apply/brand/{brand_id}', 'ApplicationController@apply_store');
将应用程序存储在数据库中
public function apply_store(Request $request)
{
$application = new Application([
'influencer_id' => Auth::id(),
'brand_id' => $request->get('brand_id'),
'message' => $request->get('message'),
'status' => 'applied'
]);
$application->save();
// TODO: add helper message to confirm application did return
return redirect('/apply');
}
答案 0 :(得分:0)
在控制方法栏apply_store中,您需要放入将接收url参数发送的变量的变量。
公共功能apply_store(Request $ request,$ brand_id){}
答案 1 :(得分:0)
我通常使用compact
或with
来将参数发送到刀片视图。所以:
return view('new-design.pages.profile_brand', compact('brand'));
或不带紧凑型
:return view('new-design.pages.profile_brand')->with('brand', $brand)
我没有在上面看到您尝试过的withVar
(但这并不意味着它不存在)。尝试使用压缩并在视图上转储$ brand
,以确保其与数据一起传递(不是未定义的)。如果转储成功,但仍然失败,则可能要尝试将变量添加在引号之外或完全添加到刀片{{}}
中,格式如下:
<form id="application_form" method="post" action={{ "/apply/brand/".$brand-> id }} enctype="multipart/form-data">
尽管不确定动作的执行方式,就像您在上面的代码中一样-您可能希望使用url()
方法:
<form id="application_form" method="post" action={{ url("/apply/brand/".$brand-> id) }} enctype="multipart/form-data">
答案 2 :(得分:0)
像这样更改您的方法
public function apply_store(Request $request,$brand_id)
{
$application = new Application([
'influencer_id' => Auth::id(),
'brand_id' => $rbrand_id,
'message' => $request->get('message'),
'status' => 'applied'
]);
$application->save();
// Ngentod lah kalian semua, anjeng
return redirect('/apply');
}