度々申し訳ございません。laravelのアプリケーション作成で、Target class [HomeController] does not exist.というエラーが発生してしまいました。
解決したいこと
度々申し訳ございません。laravelのアプリケーション作成で、Target class [HomeController] does not exist.というエラーが発生してしまいました。
こちらのエラーについて知見のある方はご教授いただきたいです。
よろしくお願いいたします。
参考にした記事はこちらでございます。
https://laracasts.com/discuss/channels/laravel/laravel8-ui-bootstrap-uiauth-error-target-class-homecontroller-does-not-exist
https://laracasts.com/discuss/channels/laravel/laravel-8-error-target-class-homecontroller-does-not-exist
発生している問題・エラー
Illuminate\Contracts\Container\BindingResolutionException
Target class [HomeController] does not exist.
http://localhost:8000/home
Illuminate\Container\Container::build
vendor/laravel/framework/src/Illuminate/Container/Container.php:832
*
* @throws \Illuminate\Contracts\Container\BindingResolutionException
*/
public function build($concrete)
{
// If the concrete type is actually a Closure, we will just execute it and
// hand back the results of the functions, which allows functions to be
// used as resolvers for more fine-tuned resolution of these objects.
if ($concrete instanceof Closure) {
return $concrete($this, $this->getLastParameterOverride());
}
try {
$reflector = new ReflectionClass($concrete);
} catch (ReflectionException $e) {
throw new BindingResolutionException("Target class [$concrete] does not exist.", 0, $e);
}
// If the type is not instantiable, the developer is attempting to resolve
// an abstract type such as an Interface or Abstract Class and there is
// no binding registered for the abstractions so we need to bail out.
if (! $reflector->isInstantiable()) {
return $this->notInstantiable($concrete);
}
該当するソースコード
post_controller.php
<?php
namespace App\Http\Controllers;
use App\Models\Post;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\DB;
class PostController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
$posts = Post::all();
return view('posts.index', ['posts' => $posts]);
}
/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function create()
{
//
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
// 新規登録したものをデータベースに反映させる場所
public function store(Request $request)
{
$id = Auth::id()
// インスタンス作成
// エラーが発生していてデータベースが作成できていないためエラーが出る
$post = new Post();
$post->body = $request->$body;
$post->user_id = $id;
$post->save();
// $post -> new Post
return redirect()->to('/posts');
}
/**
* Display the specified resource.
*
* @param \App\Models\Post $post
* @return \Illuminate\Http\Response
*/
public function show(Post $post)
{
$user_id = $post->user_id;
// sql文を書きユーザーの情報をとっていきている
$user = DB::table('users')->where('id', $user_id)->first();
return view('post.detail',['post' => $post, 'user' => $user]);
}
/**
* Show the form for editing the specified resource.
*
* @param \App\Models\Post $post
* @return \Illuminate\Http\Response
*/
public function edit($id)
{
// Postモデルのidを$postに代入
$post = Post::findOrFail($id);
// viewに返り値
return view('post.edit',['post' => $post]);
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param \App\Models\Post $post
* @return \Illuminate\Http\Response
*/
public function update(Request $request, $id)
{
//レコード検索
$post = Post::findOrFail($id);
$post->body = $request->body;
//保存(更新)
$post->save();
return redirect()->to('/posts');
}
/**
* Remove the specified resource from storage.
*
* @param \App\Models\Post $post
* @return \Illuminate\Http\Response
*/
public function destroy($id)
{
$post = Post::find($id);
$post->delete();
return redirect()->to('/posts');
}
}
User_controller.php
<?php
namespace App\Http\Controllers;
use App\Models\User;
use Illuminate\Http\Request;
class UserController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
//
}
/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function create()
{
//
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
//
}
/**
* Display the specified resource.
*
* @param \App\Models\User $user
* @return \Illuminate\Http\Response
*/
public function show(User $user)
{
//
}
/**
* Show the form for editing the specified resource.
*
* @param \App\Models\User $user
* @return \Illuminate\Http\Response
*/
public function edit(User $user)
{
//
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param \App\Models\User $user
* @return \Illuminate\Http\Response
*/
public function update(Request $request, User $user)
{
//
}
/**
* Remove the specified resource from storage.
*
* @param \App\Models\User $user
* @return \Illuminate\Http\Response
*/
public function destroy(User $user)
{
//
}
}
Home.contoller.php
<?php
namespace App\Http\Controllers;
use App\Models\Post;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\DB;
class PostController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
$posts = Post::all();
return view('posts.index', ['posts' => $posts]);
}
/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function create()
{
//
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
// 新規登録したものをデータベースに反映させる場所
public function store(Request $request)
{
$id = Auth::id()
// インスタンス作成
// エラーが発生していてデータベースが作成できていないためエラーが出る
$post = new Post();
$post->body = $request->$body;
$post->user_id = $id;
$post->save();
// $post -> new Post
return redirect()->to('/posts');
}
/**
* Display the specified resource.
*
* @param \App\Models\Post $post
* @return \Illuminate\Http\Response
*/
public function show(Post $post)
{
$user_id = $post->user_id;
// sql文を書きユーザーの情報をとっていきている
$user = DB::table('users')->where('id', $user_id)->first();
return view('post.detail',['post' => $post, 'user' => $user]);
}
/**
* Show the form for editing the specified resource.
*
* @param \App\Models\Post $post
* @return \Illuminate\Http\Response
*/
public function edit($id)
{
// Postモデルのidを$postに代入
$post = Post::findOrFail($id);
// viewに返り値
return view('post.edit',['post' => $post]);
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param \App\Models\Post $post
* @return \Illuminate\Http\Response
*/
public function update(Request $request, $id)
{
//レコード検索
$post = Post::findOrFail($id);
$post->body = $request->body;
//保存(更新)
$post->save();
return redirect()->to('/posts');
}
/**
* Remove the specified resource from storage.
*
* @param \App\Models\Post $post
* @return \Illuminate\Http\Response
*/
public function destroy($id)
{
$post = Post::find($id);
$post->delete();
return redirect()->to('/posts');
}
}
追記いたします! @ragner_k さんから、web.phpファイルを確認したいとのことなので下記に記載します。
お手数おかけしますがご確認お願いいたします。
<?php
use Illuminate\Support\Facades\Route;
/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/
Route::get('/', function () {
return view('welcome');
});
Auth::routes();
Route::get('/home', 'HomeController@index')->name('home');
Route::resource('posts', 'PostController', ['only' => ['index','show', 'create', 'store']]);
Route::get('posts/edit/{id}', 'PostController@edit');
Route::post('posts/edit', 'PostController@update');
Route::post('posts/delete/{id}', 'PostController@destroy');
また、足りない情報やご指摘があればお願いいたします。
よろしくお願いいたします!