【问题标题】:How to resolve : ReflectionException in Route.php line 333: Method App\Http\Controllers\PerekamanController::show() does not exist" in Laravel 5.3?如何解决:Route.php 第 333 行中的 ReflectionException:Laravel 5.3 中的方法 App\Http\Controllers\PerekamanController::show() 不存在?
【发布时间】:2016-12-09 22:12:49
【问题描述】:

我的 proses.blade.php 是这样的:

<form method="POST" action="{{ url('/perekamans/proses') }}">
    {!! csrf_field() !!}
    ...
</form>

我的 routes\web.php 是这样的:

Route::resource('perekamans', 'PerekamanController');

Route::get('perekamans/proses', ['uses' => 'PerekamanController@listdata']);

我的 PerekamanController 是这样的:

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class PerekamanController extends Controller
{
    public function index(Request $request)
    {
        return view('perekamans.index');
    }

    public function listData()
    {
        return view('perekamans.show');
    }
}

我的 show.blade.php 是这样的:

@extends('layouts.app')

@section('content')

    <section class="content-header">
        <h1 class="pull-left">PEREKAMAN DATA</h1>
    </section>
    <div class="content">
        <div class="clearfix"></div>

        @include('flash::message')

        <div class="clearfix"></div>
        <div class="box box-primary">
            <div class="box-body">
                    @include('perekamans.table')
            </div>
        </div>
    </div>
@endsection

我从这样的网址调用:http://localhost/mysystem/public/perekaman/proses

存在这样的错误:

哎呀,好像出了点问题。 Route.php 第 333 行中的 1/1 ReflectionException:方法 App\Http\Controllers\PerekamanController::show() 不存在

in Route.php line 333
at ReflectionMethod->__construct('App\Http\Controllers\PerekamanController', 'show') in Route.php line 333
at Route->signatureParameters('Illuminate\Database\Eloquent\Model') in Router.php line 789

看起来我的代码是正确的,但为什么它仍然是一个错误?

有什么办法可以解决我的问题吗?

更新:

对不起,我不能回答你所有的问题。每次我写评论来回答你的问题,然后点击评论按钮,它不能。存在消息:
2 天内有资格获得赏金的问题
所以你立即提供任何解决方案

【问题讨论】:

  • 首先,public 应该是你的根目录,而不是显示在 URL 中
  • 其次,在您的路线中,您没有将proses 定义为路线。
  • 你也没有定义perekaman/proses
  • 而新的错误告诉你show()方法在PerekamanController上不存在
  • 错误是关于 myController,它在哪里?

标签: php laravel laravel-5.3


【解决方案1】:

你在路线上犯了错误:

Route::get('perekamans/proses', ['uses' => 'PerekamanController@listdata']);

Route::resource('perekamans', 'PerekamanController');

改变顺序变成这样。

在 Laravel 中还有一件事可以让它变得更简单。

Route::get('perekamans/proses', 'PerekamanController@listdata');

您不需要使用uses 来设置它将使用哪个控制器

【讨论】:

    【解决方案2】:

    您的控制器缺少所有资源方法(索引、创建、存储、显示等)。您需要“操作”列中的所有方法mentioned in the documentation

    当您计划使用资源控制器时,最好使用 artisan 来搭建您的控制器:

    php artisan make:controller --resource PerekamanController 
    

    【讨论】:

      【解决方案3】:

      在 PerekamanController 中添加 show() 方法。 您的路线似乎很奇怪,可能效果不佳。因此,请确保您的 Http Webserver Rewrite 已打开。

      如果您使用 Apache,请打开您的 mod_rewrite 并在您的 .htaccess 文件中尝试此代码

      Options +FollowSymLinks
      RewriteEngine On
      
      RewriteCond %{REQUEST_FILENAME} !-d
      RewriteCond %{REQUEST_FILENAME} !-f
      RewriteRule ^ index.php [L]
      

      如果是 Nginx,在你的配置文件中试试这个

      location / {
          try_files $uri $uri/ /index.php?$query_string;
      }
      

      希望对你有帮助

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-11-05
        • 2016-08-09
        • 2019-02-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-09-01
        • 2019-12-22
        相关资源
        最近更新 更多