前提・実現したいこと
パイザラーニングをしているときに引っかかりました。
詳細画面を作ろうのレッスンです。
foreachをする際は$diaries as $diaryと入力すると、思うのですが、
$diariesが定義されていないと表示されます。
これは複数形だと認識されていないと思いますが、どうなんでしょうか?
全然わかりません。よろしくおねがいします!
発生している問題・エラーメッセージ
エラーメッセージ Undefined variable: diaries (View: /home/ubuntu/myblog/resources/views/show.blade.php)
該当のソースコード
<?php namespace App\Http\Controllers; use App\Diary; use Illuminate\Http\Request; class DiaryController extends Controller { /** * Display a listing of the resource. * * @return \Illuminate\Http\Response */ public function index() { $message = 'Welcome to my page!'; $diaries = Diary::all(); return view('index', ['message' => $message, 'diaries' => $diaries]); } /** * 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\Diary $diary * @return \Illuminate\Http\Response */ public function show(Request $request, $id ,Diary $diary) { $diary = Diary::find($id); return view('show', ['diary' => $diary]); } /** * Show the form for editing the specified resource. * * @param \App\Diary $diary * @return \Illuminate\Http\Response */ public function edit(Diary $diary) { // } /** * Update the specified resource in storage. * * @param \Illuminate\Http\Request $request * @param \App\Diary $diary * @return \Illuminate\Http\Response */ public function update(Request $request, Diary $diary) { // } /** * Remove the specified resource from storage. * * @param \App\Diary $diary * @return \Illuminate\Http\Response */ public function destroy(Diary $diary) { // } }
該当のソースコード
<?php /* |-------------------------------------------------------------------------- | 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('/diary', 'DiaryController@index')->name('diary.list'); Route::get('/diary/{id}', 'DiaryController@show')->name('diary.show');
該当のソースコード
<!DOCTYPE html> <html> <head> <meta charset='utf-8'> <title>myblog</title> <style>body {padding: 10px;}</style> </head> <body> <h1>This is myblog page</h1> <p>{{ $diary ->topic }}</p> @foreach($diaries as $diary) <p> <a href='{{ route("diary.show", ["id" => $diary->id]) }}'> {{ $diary->content }} </a> </p> @endforeach <p> <a href={{ route('diary.list') }}>一覧に戻る</a> </p> </body> </html>
該当のソースコード
<!DOCTYPE html> <html> <head> <meta charset='utf-8'> <title>paiza bbs</title> <style>body {padding: 10px;}</style> </head> <body> <h1>myblog Index Page</h1> <p>{{ $message }}</p> <p> <a href={{ route('diary.list') }}>一覧に戻る</a> </p> </body> </html>
>これは複数形だと認識されていないと思いますが
プログラムの変数名に「単語」という概念はないですよ。そういう文字列の集合体。Laravel以前にPHPはちゃんとできるのでしょうか?一定以上の知識技術は必要ですし、この内容で「全くわからない」だと、おそらく何年経っても身につかないのでは。
Laravel以前にやるべきことを飛ばしすぎてませんか?ここでアドバイスを得たところで、本質的な理解は難しいかと思います。
php十分に理解せずにやってることが
ば、、ばれましたか。
PHPを少しして、Laravelに移行した方が、実践的な経験をつめると感じたので、進めていますが、間違った方法ですかね。。
Laravel以前の前提知識である、phpの基礎理解をどこまでしておけば、よいかと言ったところが、正直わかりません。。
申し訳ありませんが、参考サイトなど、ございましたら、ご教授頂きたいです。。
本来の質問とは違う、質問で申し訳ありません。。
出ている現象がLaravel特有かPHP本来のものか見分けがつくくらいには必要です。今回起きてる現象と内容からPHPがまず不十分であると見分けは付きます。
「Web職人のためのフレームワーク」がLaravelのコンセプトです。前提となる知識技術は相当以上に必要です。いざとなったらLaravelのコアソースを確認して仕様を読み解くくらいのことはできたほうがいいですね。ドキュメントの日本語訳も充実していますし。
なるほど!larabel特有、php特有のものかがわからないと、エラーのでたところがどちらのエラーかわからないですし、コードの編集もできないとゆうことですかね、、
相当以上に必要。。?その辺りの詳細は自分で調べて進めた方が良いという感じですね、、
コアソースを確認して、仕様を読む。メモメモ。。
丁寧にありがとうございます!
Laravel です。
コードは書いたとおりにしか動かないので固有名詞の間違いは致命的になります。
「コアソースを確認して」というより「何かあったときにコアソースを読んでいけるくらいの気概がないと太刀打ちできない」というのが正しいです。
ご指摘ありがとうございます!
なるほど、キータの記事とか見るより、元を辿った方が良いとゆうことですね!
とゆうより、元をたどれ!って感じですね!
いえ、違います。
「何かあったときにコアソースを読んでいけるくらいの気概がないと太刀打ちできない」
Qiitaも優良な記事はあるので見るなとは言いませんが、裏取りに公式ドキュメント確認は必須です。
優良かどうか自身で判断できるくらいの知識量も必要です。
、、?
勉強不足で申し訳ありませんが、『コアソース』とは、①自身で入力したコード、②公式ドキュメントにあるメソッドの詳細、②で解釈してるのですが、間違ってますよね。どういった意味合いで使っていらっしゃいますか?
優良かどうかを判断できる知識、、、勉強します!!
回答1件
あなたの回答
tips
プレビュー