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

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

詳細はこちら
Laravel

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

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

1回答

517閲覧

yield('content')について

yumin0915

総合スコア3

Laravel

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

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2021/02/08 13:52

前提・実現したいこと

laravelでTwiitterクローンを作っています。
@section('content')を利用して全てのページに@yield('content')の部分を表示させたいです。
ViewComposerを使わない方法を知りたいです。
トップページでは@yield('content')の部分は表示されますが、フォロー数、フォロワー数、ユーザー検索などを押すとエラーが出てしまいます。

発生している問題・エラーメッセージ

Undefined variable: follow_count

layouts>login.blade

<div id="container"> @yield('content') </div > <div id="side-bar"> <div id="confirm"> <p>{{ Auth::user()->username }}さんの</p> <div> <p>フォロー数</p> <p>{{$follow_count}}名</p> </div> <p class="btn"><a href="/followList">フォローリスト</a></p> <div> <p>フォロワー数</p> <p>{{$follower_count}}名</p> </div> <p class="btn"><a href="/followerList">フォロワーリスト</a></p> </div> <p class="btn"><a href="/search">ユーザー検索</a></p> </div> </div>

posts>index.blade

@extends('layouts.login') @section('content') @foreach ($timelines as $timelines) <table class="table table-hover"> <tr> <td> <a href="{{$timelines->user_id}}/profile"><img class="image-circle" src="{{ asset('images/dawn.png' . $timelines->images ) }}" alt="ユーザーアイコン"></a> </td> <td>{{ $timelines->username }}</td> <td>{{ $timelines->posts }}</td> <td>{{ $timelines->created_at }}</td> @if(Auth::id()==$timelines->user_id) <td> <button type="button" class="btn" data-toggle="modal" data-target="#Modal" data-whatever="{{ $timelines->posts }}" data-post-id="{{$timelines->id}}"> <img src="{{ asset('images/edit.png') }}" alt="編集" > </button> </td> <td> <a class="" href="/delete{{$timelines->id}}/delete" onclick="return confirm('こちらの呟きを削除します。よろしいでしょうか?')"> <img src="images/trash.png" alt="削除" width="25px" height="auto"> </a> </td> @endif </tr> </table> @endforeach @endsection

PostsController

public function index(Post $post, Follow $follow, User $user) { $user = auth()->user(); $follow_ids = $follow->followingIds($user->id); $following_ids = $follow_ids->pluck('follower_id')->toArray(); $timelines = $post->getTimelines($user->id, $following_ids); $follow_count = $follow->getFollowCount($user->id); $follower_count = $follow->getFollowerCount($user->id); return view('posts.index', [ 'user' => $user, 'timelines' => $timelines, 'follow_count' => $follow_count, 'follower_count' => $follower_count ]); }

web.php

Route::get('/top','PostsController@index');

試したこと

最初return view('layouts.login')で試したのですがうまくいきませんでした。

補足情報(FW/ツールのバージョンなど)

index.bladeのモーダルは省略してあります。

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

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

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

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

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

AbeTakashi

2021/02/08 14:48 編集

/followList /followerList /search のRouteの設定と対応するコントローラーのメソッドのソースやビューも記述した方が良いのでは? てか、質問内容的にそちらの方が重要な気がしますが
m.ts10806

2021/02/08 21:35

yeildと今回起きてる問題無関係じゃないでしょうか。
guest

回答1

0

ベストアンサー

Userクラスには、おそらく、既に以下のようなリレーションのメソッドを定義されているかと思います。(メソッド名は違うかもしれませんが)

php

1 /** 2 * このユーザーがフォローしているユーザー 3 */ 4 public function follows() 5 { 6 return $this->belongsToMany( ... 7 } 8 9 /** 10 * このユーザーをフォローしているユーザー(フォロワー) 11 */ 12 public function followers() 13 { 14 return $this->belongsToMany( ... 15 }

参考: 多対多リレーション

その場合、ログインユーザーのフォロー数、フォロワー数なら、それらのメソッドを使って、以下のようにすれば表示できるのではないでしょうか。

<p>フォロー数</p> <p>{{ Auth::user()->follows()->count() }}名</p> ... <p>フォロワー数</p> <p>{{ Auth::user()->followers()->count() }}名</p>

投稿2021/02/09 01:41

編集2021/02/09 13:17
Lulucom

総合スコア1899

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

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

yumin0915

2021/02/10 11:26

無事表示できました。助かりました、ありがとうございます。
Lulucom

2021/02/10 14:35

よかったです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問