2016-06-22 9 views
1

私は「この質問がたくさん聞かれることを知っています。私は何も私のために働いていると言うとき、私を信じてください。クラス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。私はここにいくつかのステップを欠場ですか?誰もが同様の問題に遭遇しますか?追加情報が必要な場合はお知らせください。

EDIT ここには、先頭の名前空間があります。

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

どこから 'blog'と呼んでいますか? – C2486

+0

コントローラクラスに名前空間がありますか? – miken32

+0

投稿内の名前空間を参照してください。 – IE5Master

答えて

1

composer dumpautoloadが役に立っていない場合は、に適切なnamespace宣言があるかどうかを確認し、クラス名/ルート宣言のタイプミスを再度確認してください。

これは、自動ロード設定にcomposer.jsonをチェック失敗した場合、それはこのようなものが必要です:

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

または

Route::get('blog',\App\Http\Controllers\PostController::class . '@index'); 
:側は、あなたがこのようなものを使用することができます注意したよう

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

これでまともなIDEを使用すると、何らかの警告が表示されるはずですタイプミス

編集があります/ファイルを見つけることができません。

あなたのファイルがあれば右<?phpまたは<?php declare(strict_types = 1);後、ファイルのbegginingでは、この

namespace App\Http\Controllers; 

のような行を持つべきですあなたはphp7 strictモードを使用しています

+0

こんにちは、私は約50回、私のスペルをチェックして再確認しました。私は私のcomposer.jsonファイルをチェックし、あなたが述べた内容がそこにあります。 – IE5Master

+0

あなたはあなたの質問を_use_あなたの名前空間で更新しましたが、PostController.phpに '<?php namespace App \ Http \ Controllers;はありますか? –

+0

私は、更新された投稿にあります。 – IE5Master

関連する問題