如何解决:Route.php第333行中的ReflectionException:方法App \ Http \ Controllers \ PerekamanController :: show()不存在"在Laravel 5.3?

时间:2016-12-09 22:12:49

标签: php laravel laravel-5.3

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

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

我的路线\ 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天内有资格获得赏金的问题
所以你马上提供任何解决方案

3 个答案:

答案 0 :(得分:2)

你在路线上犯了错误:

 preg_match("/(\/)(\w+)(\?)/",$data,$m);

 echo $m[2];

改变顺序就好了。

在Laravel还有一件事你可以更简单。

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

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

您无需使用Route::get('perekamans/proses', 'PerekamanController@listdata'); 来设置将使用哪个控制器

答案 1 :(得分:0)

您的控制器缺少所有资源方法(索引,创建,存储,显示等)。您需要&#34; actions&#34;中的所有方法mentioned in the documentation。列。

当您计划使用资源控制器时,最好使用工匠来支撑您的控制器:

php artisan make:controller --resource PerekamanController 

答案 2 :(得分:0)

在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;
}

希望这会对你有所帮助