Laravel:[App \ Http \ Controllers \ admin \ PostsController]上不存在方法[索引]

时间:2018-02-12 18:40:56

标签: php laravel

这个答案并没有解决我的问题Route::controllers - Method [index] does not exist on [App\Http\Controllers

在web.php中

Route::prefix('admin')->group(function () {
    Route::resource('post', 'admin\PostsController');
});
在app / Http / Controllers / admin中

我有PostsController.php

包含

<?php

namespace App\Http\Controllers\admin;

use App\Model\Post;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;

class PostsController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        //
        $posts = \App\Post::all();
        return view('admin.posts',['posts'=>$posts]);
    }

    /**
     * Show the form for creating a new resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function create(Request $request)
    {
        //
        $post = new Post;

        $post->content = $request->input('descr');

        $post->save();
    }

当我转到此网址http://127.0.0.1:8000/admin/post

我收到以下错误

  

BadMethodCallException方法[index]不存在   [应用\ HTTP \控制器\管理员\ PostsController]。

call_user_func_array
…
/vendor/laravel/framework/src/Illuminate/Routing/Controller.php 56 

 public function callAction($method, $parameters)
    {
        print_r($this);
        echo $method;die();
        return call_user_func_array([$this, $method], $parameters);
    }

//输出

App\Http\Controllers\admin\PostsController Object ( [middleware:protected] => Array ( ) ) index

php artisan打印以下内容

php artisan route:list 

|        | GET|HEAD  | admin/post             | post.index   | App\Http\Controllers\admin\PostsController@index   | web

2 个答案:

答案 0 :(得分:1)

使用laravel版本5.4,我运行了这个命令

<div id="id2">aw</div>

在web.php路由文件中添加了这个

php artisan make:controller admin/PostsController --resource

控制器文件

Route::prefix('admin')->group(function () {
    Route::resource('post', 'admin\PostsController');
});

对我来说很好用

enter image description here

答案 1 :(得分:0)

也许您的控制器中有模棱两可的类,这意味着您在不同的控制器中可能具有相同的类名。要解决该问题,请运行以下命令

 1. composer update 
 2. composer dumpautoload
 3. php artisan config:cache
 4. php artisan view:clear

确保 composer更新成功运行且没有错误。如果控制台中提到错误,请更正所有错误,使其在代码库中发生的地方。