0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Laravelエラー】Illuminate\Routing\Router::resources(): Argument #1 ($resources) must be of type array, string given

Last updated at Posted at 2025-02-14

問題

「Laravel」+「Docker」+「Nginx」のリバースプロキシ環境で、Breeze導入後、記事投稿のCRUDを実装していたところ次のようなエラーが発生したため、解消方法をまとめています。

エラー内容

Router::resources() の1番目の引数は配列でなければならないが文字列が渡されているという型のエラーが出ているようです。

Internal Server Error

TypeError
Illuminate\Routing\Router::resources(): Argument #1 ($resources) must be of type array, string given, called in /var/www/src/vendor/laravel/framework/src/Illuminate/Support/Facades/Facade.php on line 361

Image from Gyazo

問題発生時のコード

src/route/web.php
<?php

use App\Http\Controllers\ProfileController;
use App\Http\Controllers\ArticleController;
use Illuminate\Support\Facades\Route;

Route::get('/', function () {
    return view('top');
})->name('top');

Route::get('/dashboard', function () {
    return view('dashboard');
})->middleware(['auth', 'verified'])->name('dashboard');

Route::middleware('auth')->group(function () {
    Route::get('/profile', [ProfileController::class, 'edit'])->name('profile.edit');
    Route::patch('/profile', [ProfileController::class, 'update'])->name('profile.update');
    Route::delete('/profile', [ProfileController::class, 'destroy'])->name('profile.destroy');
    Route::resources('/article', ArticleController::class); // 原因となるコード
});

require __DIR__.'/auth.php';

解決方法

resources」と記述していたのが原因だったため、「resource」に修正しました。

src/route/web.php
Route::resource('/article', ArticleController::class);

全体のコード

<?php

use App\Http\Controllers\ProfileController;
use App\Http\Controllers\ArticleController;
use Illuminate\Support\Facades\Route;

Route::get('/', function () {
    return view('top');
})->name('top');

Route::get('/dashboard', function () {
    return view('dashboard');
})->middleware(['auth', 'verified'])->name('dashboard');

Route::middleware('auth')->group(function () {
    Route::get('/profile', [ProfileController::class, 'edit'])->name('profile.edit');
    Route::patch('/profile', [ProfileController::class, 'update'])->name('profile.update');
    Route::delete('/profile', [ProfileController::class, 'destroy'])->name('profile.destroy');
    Route::resource('/article', ArticleController::class); // 修正完了
});
require __DIR__.'/auth.php';

おわりに

以前にrailsで学習しており、「resources」と記述していtのもあってついその記述をしてしまいました。

ちなみにこのエラー出す以前にタイポミスをしており、「〜〜does not exist.」というエラーも出しておりました。

Laravelもわかってくると楽しいのですが、コードの記述量やRailsと書き方も違って慣れるまで難しさを感じます。

この記事がエラー解消のために役立ちましたら幸いです。
また、この記事の内容に不備や改善点などがありましたら、ご指摘いただけると嬉しいです。

参考

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?