【问题标题】:Laravel: Route [PackageController.fetch] not definedLaravel:路由 [PackageController.fetch] 未定义
【发布时间】:2019-09-18 11:37:14
【问题描述】:

这是刀片文件。我正在从数据库中提取数据并动态依赖第一个下拉框。

<div class="container">
    <link rel="stylesheet" type="text/css"  href="css/mystyle.css">


    <div class="row justify-content-center">
        <div class="col-md-8">
            <div class="card">
                <div class="card-header">Welcome {{ Auth::user()->name }}</div>


                        </thead>
                        <tbody>
                          <tr>
                            <td>

                               <select class="form-control input-lg dynamic" name="service_type[]" id="service_type[]" data-parsley-required="true" data-dependent="service_name[]">
                                <option value="">Select Service Type</option>
                                @foreach ($services as $service )
                                <option value="{{ $service->service_type }}">{{ $service->service_type }}</option>
                                @endforeach
                              </select>                         

                            </td>


                              </select></td>
                            <td><input type="text" name="service_price[]" class="form-control input-lg dynamic"></td>
                            <td><a href="#" class="btn btn-danger remove">-</td>
                          </tr>
                        </tbody>

                      </table>

                    </div>
                  </div>

                </div>     
            </div>
        </div>
    </div>
    {{ csrf_field() }}
</div>

<script type="text/javascript">
  $(document).ready(function(){
    $('.dynamic').change(function(){
        if($(this).val() != '')
        {
          var select = $(this).attr("id");
          var value = $(this).val();
          var dependent = $(this).data('dependent');
          var _token = $('input[name="_token"]').val();
          $.ajax({
            url:"{{ route('PackageController.fetch') }}",method:"POST",data:{select:select,value:value,_token:_token,dependent:dependent},
            success:function(result)
            {
              $('#'+dependent).html(result);
            }
          })
        }


    });

  });


</script>

我有一个带 fetch 功能的控制器

PackageController.php

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Http\Requests;
use App\Http\Controllers\Controller;
use App\Package;
use App\Service;
use DB;
use Session;

class PackageController extends Controller
{
    public function index()
    {}
    function fetch(Request $request)
    {
        $select = $request->get('select');
        $value = $request->get('value');
        $dependent = $request->get('dependent');
        $data = DB::table('services')
                ->where($select,$value)
                ->groupBy($dependent)
                ->get();
        $output = '<option value="">Select '.ucfirst($dependent).'</option>';
        foreach ($$data as $row) {
            $output .= '<option value="'.$row->$dependent.'">'.$row->$dependent.'</option>';
            # code...
        }
        echo $output;
    }
}

Route::resource('package','PackageController');
Route::get('package/fetch','PackageController@fetch');

但是显示这个错误

路由 [PackageController.fetch] 未定义。 (看法: /home/devadmin/.config/composer/vendor/laravel/installer/serenseprj/resources/views/package.blade.php

【问题讨论】:

  • 发布你的刀片文件你如何调用路由
  • @chaitra 您的路线指向不同的位置。尝试更改您的控制器文件和控制器,然后检查。将名称更改为 PackagesController 而不是 PackageController。我认为这可能会有所帮助
  • 我发布了我的刀片文件
  • @chaitra 看我的回答

标签: mysql ajax laravel


【解决方案1】:

自从您发布刀片文件以来,您使用 named route 调用 url,您尚未在 web.php 中定义该文件

更改路线

Route::get('package/fetch','PackageController@fetch')->name('PackageController.fetch');

在您的 js 部分中,您将 GET 路由称为 POST,或者将您的路由更改为 web.php 中的 POST,或者在您的 js 中将其更改为 GET 谢谢。

【讨论】:

    【解决方案2】:

    您似乎忘记了函数声明中的 public 关键字:

    public function fetch(Request $request)
    {
        $select = $request->get('select');
        $value = $request->get('value');
        $dependent = $request->get('dependent');
        $data = DB::table('services')
            ->where($select,$value)
            ->groupBy($dependent)
            ->get();
        $output = '<option value="">Select '.ucfirst($dependent).'</option>';
        foreach ($$data as $row) {
            $output .= '<option value="'.$row->$dependent.'">'.$row->$dependent.'</option>';
            # code...
        }
        echo $output;
    }
    

    【讨论】:

      猜你喜欢
      • 2018-06-30
      • 2018-12-16
      • 2020-02-06
      • 2015-01-16
      • 2019-05-03
      • 2019-05-12
      • 2020-08-16
      • 2019-09-10
      相关资源
      最近更新 更多