🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

Q&A

解決済

1回答

3948閲覧

php artisan serveで Array to string conversionというエラーが出て繋がらない

退会済みユーザー

退会済みユーザー

総合スコア0

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

0グッド

0クリップ

投稿2021/02/08 10:05

編集2021/02/08 12:12

フレームワークLaravel 入門第2版 掌田津耶乃著で勉強しています。
以下のエラーが出て前に進めません。理解度は半分ぐらいです。

C:\XAMPP\htdocs\laravelapp>php artisan serve

ErrorException

Array to string conversion

at C:\XAMPP\htdocs\laravelapp\vendor\laravel\framework\src\Illuminate\Routing\ResourceRegistrar.php:410
406▕ protected function getResourceAction($resource, $controller, $method, $options)
407▕ {
408▕ $name = $this->getResourceRouteName($resource, $method, $options);
409▕
➜ 410▕ $action = ['as' => $name, 'uses' => $controller.'@'.$method];
411▕
412▕ if (isset($options['middleware'])) {
413▕ $action['middleware'] = $options['middleware'];
414▕ }

1 C:\XAMPP\htdocs\laravelapp\vendor\laravel\framework\src\Illuminate\Routing\ResourceRegistrar.php:410
Illuminate\Foundation\Bootstrap\HandleExceptions::handleError("Array to string conversion", "C:\XAMPP\htdocs\laravelapp\vendor\laravel\framework\src\Illuminate\Routing\ResourceRegistrar.php", ["rest", "index", "rest.index"])

2 C:\XAMPP\htdocs\laravelapp\vendor\laravel\framework\src\Illuminate\Routing\ResourceRegistrar.php:187
Illuminate\Routing\ResourceRegistrar::getResourceAction("rest", "index", [])

C:\XAMPP\htdocs\laravelapp>

410行目の配列$actionが絡んだエラーであることはわかります。
Array to string conversionは配列が文字列に変換されて出るエラーだということですが、
どこをいじればいいかわかりません。サーバーを起動するとき、プロジェクトlaravelappは
関係するのでしょうか?

とりあえず、解決の糸口を教えていただけますかお願いいたします。

php

1//C:\XAMPP\htdocs\laravelapp\routes\web.php 2 3 4<?php 5 6use Illuminate\Support\Facades\Route; 7use App\Http\controllers\HelloController; 8use App\Http\controllers\PersonController; 9use App\Http\controllers\BoardController; 10use App\http\controllers\RestappController; 11 12use App\Http\Middleware\HelloMiddleware; 13 14 15Route::get('/', function () { 16return view('welcome'); 17}); 18 19 20Route::get('hello', [HelloController::class,'index']); 21Route::post('hello', [HelloController::class,'post']); 22 23Route::get('hello/add', [HelloController::class,'add']); 24Route::post('hello/add', [HelloController::class,'create']); 25 26Route::get('hello/edit', [HelloController::class,'edit']); 27Route::post('hello/edit', [HelloController::class,'update']); 28 29Route::get('hello/del', [HelloController::class,'del']); 30Route::post('hello/del', [HelloController::class,'remove']); 31 32Route::get('hello/show', [HelloController::class,'show']); 33 34Route::get('person', [PersonController::class,'index']); 35 36Route::get('person/find', [PersonController::class,'find']); 37Route::post('person/find', [PersonController::class,'search']); 38 39Route::get('person/add', [PersonController::class,'add']); 40Route::post('person/add', [PersonController::class,'create']); 41 42Route::get('person/edit', [PersonController::class,'edit']); 43Route::post('person/edit', [PersonController::class,'update']); 44 45Route::get('person/del', [PersonController::class,'delete']); 46Route::post('person/del', [PersonController::class,'remove']); 47 48Route::get('board', [BoardController::class,'index']); 49 50Route::get('board/add', [BoardController::class,'add']); 51Route::post('board/add', [BoardController::class,'create']); 52 53Route::resource('rest', [RestappController::class.'index']); 54Route::resource('rest', [RestappController::class.'show']); 55// 上の2個はRoute::resource('rest', 'RestappController');を 56// 編集しなおしたので間違っているかもしれません。 57 58 59

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2021/02/08 10:26

ルートの定義はどうなってますか。
退会済みユーザー

退会済みユーザー

2021/02/08 11:16

ありがとうございます。以下のようになっています。 <?php use Illuminate\Support\Facades\Route; use App\Http\controllers\HelloController; use App\Http\controllers\PersonController; use App\Http\controllers\BoardController; use App\http\controllers\RestappController; use App\Http\Middleware\HelloMiddleware; /* |-------------------------------------------------------------------------- | 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'); }); Route::get('hello', [HelloController::class,'index']); Route::post('hello', [HelloController::class,'post']); Route::get('hello/add', [HelloController::class,'add']); Route::post('hello/add', [HelloController::class,'create']); Route::get('hello/edit', [HelloController::class,'edit']); Route::post('hello/edit', [HelloController::class,'update']); Route::get('hello/del', [HelloController::class,'del']); Route::post('hello/del', [HelloController::class,'remove']); Route::get('hello/show', [HelloController::class,'show']); Route::get('person', [PersonController::class,'index']); Route::get('person/find', [PersonController::class,'find']); Route::post('person/find', [PersonController::class,'search']); Route::get('person/add', [PersonController::class,'add']); Route::post('person/add', [PersonController::class,'create']); Route::get('person/edit', [PersonController::class,'edit']); Route::post('person/edit', [PersonController::class,'update']); Route::get('person/del', [PersonController::class,'delete']); Route::post('person/del', [PersonController::class,'remove']); Route::get('board', [BoardController::class,'index']); Route::get('board/add', [BoardController::class,'add']); Route::post('board/add', [BoardController::class,'create']); Route::resource('rest', [RestappController::class.'index']); Route::resource('rest', [RestappController::class.'show']); 6章までやってきて、7章でこれが出るようになりました。 ※リソースコントローラとRESTfulから続く、マイグレーションの作成、モデルの作成、シードの作成, シードの実行のあたりまで来たときに、このエラーが出ました。 多分 php artisabn db:seed の時だと覚えています。復習のため1章から6章までやりなおしましたが、7章でまた同じエラーになりました。 今回は php artisan serve もできない状態で困っています。よろしくお願いいたします。
takasima20

2021/02/08 11:20

$controller か $method が配列なんじゃないの? getResourceAction() 使ってるとこ調べてみたら?
退会済みユーザー

退会済みユーザー

2021/02/08 11:31

すみません。よくわからないので、少しく詳しく具体的に教えて頂けませんか。
guest

回答1

0

ベストアンサー

web.phpの最後の2行を削除してphp artisan serveは実行できました。

Route::resource('rest', [RestappController::class.'index']);
Route::resource('rest', [RestappController::class.'show']);

参考書のコードは以下のようになっていました
Route::resource('rest', 'RestappController');

Laravel Installer 4.1.1になっていました。それもエラーの原因かもしれません。
Laravel 7.30.1をインストーㇽしなおしました。
今日はここまでにします。

投稿2021/02/08 12:29

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2021/02/08 13:07

参考書のコードは以下のようになっていましたが、 Route::resource('rest', 'RestappController'); Route::resource('rest', 'RestappController',['only' => ['index', 'show']]); のように変更してサーバーを起動できました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問