2016-06-22 226 views
1

讓我開始說「我知道這個問題被問了很多。」相信我,當我說什麼都沒有爲我工作。Class App Http Controllers PostController不存在

我創建了一個名爲PostController的控制器。這是我的博客的控制器。當我導航到我的博客時,即使它確實存在,我也會得到以下錯誤Class App\Http\Controllers\PostController does not exist。該控制器被稱爲PostController.php。這裏是什麼路線看起來像Route::get('blog','[email protected]');。我已經讀過,運行一些composer命令將有所幫助,但他們都沒有幫助過我。 composer dumpautoload以及composer update。我在這裏錯過了一些步驟?任何人遇到類似的問題?請讓我知道是否需要額外的信息。

編輯 這裏是頂部的命名空間。

use App\Http\Controllers; 
use App\Posts; 
use App\User; 
use App\Http\Controllers\Controller; 
use App\Http\Requests\PostFormRequest; 
use Illuminate\Http\Request; 

這是整個控制器。

<?php 
use App\Http\Controllers; 
use App\Posts; 
use App\User; 
use App\Http\Controllers\Controller; 
use App\Http\Requests\PostFormRequest; 
use Illuminate\Http\Request; 



class PostController extends Controller { 

/** 
* Display a listing of the resource. 
* 
* @return Response 
*/ 
    public function index() 
    { 
     //fetch 5 posts from database which are active and latest 
     $posts = Posts::where('active',1)->orderBy('created_at','desc')->paginate(5); 
     //page heading 
     $title = 'Latest Posts'; 
     //return home.blade.php template from resources/views folder 
     return view('blog/home')->withPosts($posts)->withTitle($title); 
    } 


/** 
* Show the form for creating a new resource. 
* 
* @return Response 
*/ 
    public function create(Request $request) 
    { 
     // if user can post i.e. user is admin or author 
     if($request->user()->can_post()) 
     { 
     return view('blog.create'); 
     }  
     else 
     { 
     return redirect('blog'); 
     } 
    } 


/** 
* Store a newly created resource in storage. 
* 
* @return Response 
*/ 
    public function store(PostFormRequest $request) 
    { 
     $post = new Posts(); 
     $post->title = $request->get('title'); 
     $post->body = $request->get('body'); 
     $post->slug = str_slug($post->title); 
     $post->author_id = $request->user()->id; 
     if($request->has('save')) 
     { 
     $post->active = 0; 
     $message = 'Post saved successfully';    
     }    
     else 
     { 
     $post->active = 1; 
     $message = 'Post published successfully'; 
     } 
     $post->save(); 
     return redirect('edit/'.$post->slug)->withMessage($message); 
    } 


/** 
* Display the specified resource. 
* 
* @param int $id 
* @return Response 
*/ 
    public function show($slug) 
    { 
     $post = Posts::where('slug',$slug)->first(); 
     if(!$post) 
     { 
     return redirect('/')->withErrors('requested page not found'); 
     } 
     $comments = $post->comments; 
     return view('posts.show')->withPost($post)->withComments($comments); 
    } 


/** 
* Show the form for editing the specified resource. 
* 
* @param int $id 
* @return Response 
*/ 
    public function edit(Request $request,$slug) 
    { 
     $post = Posts::where('slug',$slug)->first(); 
     if($post && ($request->user()->id == $post->author_id || $request->user()->is_admin())){ 
      return view('posts.edit')->with('post',$post); 
     } 
     return redirect('blog')->withErrors('you have not sufficient permissions'); 
    } 


/** 
* Update the specified resource in storage. 
* 
* @param int $id 
* @return Response 
*/ 
    public function update(Request $request) 
    { 
     // 
     $post_id = $request->input('post_id'); 
     $post = Posts::find($post_id); 
     if($post && ($post->author_id == $request->user()->id || $request->user()->is_admin())) 
     { 
     $title = $request->input('title'); 
     $slug = str_slug($title); 
     $duplicate = Posts::where('slug',$slug)->first(); 
     if($duplicate) 
     { 
      if($duplicate->id != $post_id) 
      { 
      return redirect('edit/'.$post->slug)->withErrors('Title already exists.')->withInput(); 
      } 
      else 
      { 
      $post->slug = $slug; 
      } 
     } 
     $post->title = $title; 
     $post->body = $request->input('body'); 
     if($request->has('save')) 
     { 
      $post->active = 0; 
      $message = 'Post saved successfully'; 
      $landing = 'edit/'.$post->slug; 
     }    
     else { 
      $post->active = 1; 
      $message = 'Post updated successfully'; 
      $landing = $post->slug; 
     } 
     $post->save(); 
      return redirect($landing)->withMessage($message); 
     } 
     else 
     { 
     return redirect('blog')->withErrors('you have not sufficient permissions'); 
     } 
    } 


/** 
* Remove the specified resource from storage. 
* 
* @param int $id 
* @return Response 
*/ 
    public function destroy(Request $request, $id) 
    { 
     // 
     $post = Posts::find($id); 
     if($post && ($post->author_id == $request->user()->id || $request->user()->is_admin())) 
     { 
     $post->delete(); 
     $data['message'] = 'Post deleted Successfully'; 
     } 
     else 
     { 
     $data['errors'] = 'Invalid Operation. You have not sufficient permissions'; 
     } 
     return redirect('blog')->with($data); 
    } 


} 

謝謝。

+0

從你打電話給'博客'你能分享我們嗎? – C2486

+0

你的控制器類有一個名稱空間嗎? – miken32

+0

請查看帖子中的命名空間。 – IE5Master

回答

1

如果composer dumpautoload沒有幫助,那麼請檢查您是否在PostController.php中有正確的namespace聲明,並在類名/路由聲明中重複檢查拼寫錯誤。

如果失敗檢查composer.json爲自動加載的配置,它應該是這樣的:

"autoload": { 
    "psr-4": { 
     "App\\": "app/" 
    } 
}, 

作爲一個側面說明,你可以使用這樣的事情:

Route::get('blog',PostController::class . '@index'); 

Route::get('blog',\App\Http\Controllers\PostController::class . '@index'); 

有了這個任何像樣的IDE應該給它一些警告,如果它找不到文件/有一個錯字

編輯

你的文件應該有這樣

namespace App\Http\Controllers; 

在文件的beggining線,<?php<?php declare(strict_types = 1);如果之後你正在使用php7嚴格模式

+0

你好,我已經檢查並重新檢查了我的拼寫約50次。我檢查了我的composer.json文件,你提到的內容在那裏。 – IE5Master

+0

我看到你用名稱空間更新了你的問題_use_,但是你有'<?php namespace App \ Http \ Controllers;'在PostController.php中嗎? –

+0

我這樣做,它是在更新後的帖子。 – IE5Master

相關問題