Javascriptを使用して選択した値を取得し、その値をサーバー側に送信して、Laravel - PHPを使用して処理しようとしています。これは私がこれまでに書いた ocde ですが、サーバー側で取得できていません。他に何かする必要がありますか?
これはブレード ファイルです。
{!! Form::open(array('url' => 'created-products', 'method' => 'post'), array('id'=>'createproduct')) !!}
{!! Form::token() !!}
@if(!Auth::check())
<p><h3>Please login to create product</h3></p>
@else
<p>{!! Form::select('companyname', array('' => 'Select a Company') + $listCompanies, null, array('id'=>'companynameId')) !!} </p>
<p>{!! Form::text('productname', Input::old('productname')) !!}</p>
<p>{!! Form::hidden('hiddenCompanyName', '', array('id'=>'selectedCompanyHidden')) !!}</p>
<p>{!! Form::submit('CREATE PRODUCT') !!}</p>
@endif
<script>
var returnedCompany = document.getElementById("companynameId");
var storedCompany = returnedCompany.options[returnedCompany.selectedIndex].value;
var hiddenCompanyId = document.getElementsByName('hiddenCompanyName');
document.createproduct.hiddenCompanyId.value = storedCompany;
document.forms["createproduct"].submit();
</script>
{!! Form::close() !!}
これは、ブレード ファイルから値を取得する関数です。
private static function compareCompany(ProductRequest $productRequest){
$companyPicked = $productRequest->hiddenCompanyName;
$listedCompanies = Company::where('user_id', '=', Auth::user()->id);
$companies = new Company;
if($companies->user_id === Auth::user()->id)
{
foreach($listedCompanies as $company) {
if($company->companyname === $companyPicked)
{
return $company->id;
}
}
}
}
DBに保存する機能です。
public function store(ProductRequest $productRequest)
{
$product = new Product;
$company = new Company;
if($productRequest->isMethod('post')){
$product->user_id = Auth::user()->id;
$product->company_id = $this->compareCompany($productRequest);
$product->companyname = $productRequest->companyname;
$product->productname = $productRequest->productname;
$product->save();
return redirect()->route('companyindex')->with('message', 'Your question has been posted.');
}else{
return redirect('company-create')->withErrors($productRequest)->withInput();
}
}
助けてください。私は何日もこれを続けてきました。感謝。