Laravel 5.4中不允许使用的方法

时间:2017-07-06 08:00:20

标签: php laravel-5

提交选择框时,我收到的方法不允许出错 我从视图发送文件URL和数组。我从控制器打印这些值它工作正常,但在尝试插入到数据库时我得到一个错误MethodNotAllowedHttpException。如果我使用dd($ excelData)我正在获取数据,路由工作正常。

Click here for error

public function uploadExcelData(Request $request)
{
    $url   = request('link');
    $array = request('index');
     print_r($array);
     echo $url;

    $excelData    = (Excel::load($url))->get();

    if(!empty($excelData) && $excelData->count()){

        foreach ($excelData->toArray() as $key => $value) {

            if(!empty($value)){

                    $insert[] = ['JobTitle' => $value[$array[0]], 'Skills' => $value[$array[1]],
                                 'Package'=>$value[$array[2]],"Location"=>$value[$array[3]]];           
            }
        }

        if(!empty($insert)){
            Jobposting::insert($insert);
            return back();
        }else{
            echo "empty";

        }
    }
}

这是刀片文件

<?php
//print_r($excelHeaders);
 // print_r($dbHeaders); 
 // @dd($excelData);
 //echo $url; onsubmit="return insertOrder();"
 ?>
<form  action="{{ URL::to('uploadExcelFile') }}" class="form-horizontal" method="POST" onsubmit="return insertOrder();">
{{ csrf_field() }}
 <table>
@for ($i=1; $i < sizeof($dbHeaders); $i++) 
<tr>
  <td> <input type="text" name="" value="{{$dbHeaders[$i]}}" disabled="disabled" class="droptargetinputs inputfields">
 <!--  <input type="hidden" name="{{$dbHeaders[$i]}}" id="{{$dbHeaders[$i]}}" value=""> -->
  </td>
  <td>
  	<select class="order">
  	<option>Select</option>
		  @for ($j=1; $j < sizeof($excelHeaders); $j++) 
		  		<option value="{{ $excelHeaders[$j]}}">{{ $excelHeaders[$j]}}</option>
		  @endfor
  	</select>
 <input type="hidden" name="link" value="{{$url}}">
  </td>
</tr>
@endfor
<tr><td><input type="submit" name="submit" value="click"></td><td><!-- <input type="button" name="submit" 
onclick="insertOrder()" value="mapping"> --></tb></tr>
</table>
<div id="hidden"></div>
</form>
<script type="text/javascript">
	   function insertOrder(){
         var table  = document.getElementsByClassName("order");
         var array  = Array();
         for(i=0; i<table.length; i++){
         	 // array[i] = table[i].value;
         	 // alert(array);

            var hide   = document.createElement("INPUT");
		    hide.type  ="hidden";
		    hide.value = table[i].value; 
		    hide.name  = "index[]"; 
		    var attach = document.getElementById('hidden');
		    attach.appendChild(hide);

         }


        }
</script>
</body>

我的路线:

路线::得到( 'uploadHome', 'ExcelController @ showUpload');

Route :: POST('importExcelFile','ExcelController @ importExcel');

/ * Route :: match(['get','post'],'uploadExcelFile','ExcelController @ uploadExcelData'); * /

Route :: POST('uploadExcelFile','ExcelController @ uploadExcelData');

1 个答案:

答案 0 :(得分:1)

假设你仔细检查了这个:

  

如果我使用dd($ excelData)我正在获取数据,路由工作正常。

我认为问题可能在这里:

return back();

我认为你的路线动词有些乱七八糟。所以你可以试着像这样重定向:

return redirect('/my-route-that-works');

如果这仍然不起作用,你也应该发布你的路线文件,因为在这种情况下,我认为你的路线不是&#34;工作正常&#34;。

阅读您的评论和更新,似乎您用大写写了Route::POST,这不是正确的方法。尝试更换:

Route::POST

人:

Route::post