2016-06-22 5 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

Откуда вы звоните в «блог», можете ли вы поделиться нами? – C2486

+0

У вас есть пространство имен в классе контроллера? – miken32

+0

Пожалуйста, смотрите пространства имен в сообщении. – IE5Master

ответ

1

Если composer dumpautoload не помогает, проверьте, есть ли у вас надлежащая декларация namespace в PostController.php и дважды проверьте наличие опечаток в названии класса/декларации маршрута.

Если это не удается проверить composer.json для конфигурации автозагрузки, он должен иметь что-то вроде этого:

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

В качестве примечания можно использовать что-то вроде этого:

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

или

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

При этом любая достойная IDE должна дать какой-то предупреждение ING, если он не может найти файл/есть опечатка

Edit:

Ваш файл должен иметь строку этой

namespace App\Http\Controllers; 

На самом начале файла, сразу после <?php или <?php declare(strict_types = 1);, если вы используете строгий режим php7

+0

Привет, я проверил и перепроверял мое правописание около 50 раз. Я проверил файл composer.json, и содержимое, о котором вы упомянули, находится там. – IE5Master

+0

Я вижу, что вы обновили свой вопрос с пространствами имен, которые вы _use_, но у вас есть '

+0

Я делаю, он находится в обновленном сообщении. – IE5Master

Смежные вопросы