質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.48%
ファイル

ファイルとは、文字列に基づいた名前又はパスからアクセスすることができる、任意の情報のブロック又は情報を格納するためのリソースです。

Laravel

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

MVC

MVC(Model View Controller)は、オブジェクト指向プログラミングにおけるモデル・ビュー・コントローラーの総称であり、ソフトフェア開発で使われている構築パターンとしても呼ばれます。

Q&A

解決済

3回答

1554閲覧

laravel MVCのindexを2つ作る方法はありますか?

Tony-Aaron

総合スコア22

ファイル

ファイルとは、文字列に基づいた名前又はパスからアクセスすることができる、任意の情報のブロック又は情報を格納するためのリソースです。

Laravel

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

MVC

MVC(Model View Controller)は、オブジェクト指向プログラミングにおけるモデル・ビュー・コントローラーの総称であり、ソフトフェア開発で使われている構築パターンとしても呼ばれます。

0グッド

0クリップ

投稿2021/01/21 04:19

#はじめに
laravel初心者です。初歩的な質問で申し訳ありません。
現在ポートフォリオを作成しています。製作中に疑問点が浮かびました。

#実現したいこと
MVCのコントローラーにviewを二つ作る方法はありますか?
口コミサイトのトップページはコントローラーのindexを使います。 口コミサイトのお店一覧もコントローラーのindexを使います。お店はURLを貼り付けて表示させるのみです。
イメージ図としてはこのように作成をする予定です。

###MVCイメージ図
MVCイメージ図

該当のソースコード

wep.php(ルーティング)

1Route::get('/online_reviews/top', 'OnlineReviewsController@index')->name('top.index'); 2Route::get('/online_reviews/shop', 'OnlineReviewsController@index')->name('shop.index');
ReviewsController.php(コントローラー) namespace App\Http\Controllers; use Illuminate\Http\Request; class OnlineReviewsController extends Controller { public function index() { return view('online_reviews.top'); } public function index() { return view('online_reviews.shop'); } }

top.blade.php

1<!DOCTYPE html> 2<html lang="ja"> 3<head> 4 <meta charset="utf-8"> 5 <title>top-page</title> 6 <link rel="stylesheet" href="{{ asset('css/online_reviews/top_page.css') }}"> 7 <link href="{{asset('/assets/css/reset.css')}}" rel="stylesheet"> 8</head> 9 <body> 10 <div class="wrapper"> 11 <header> 12 @if (Route::has('login')) 13 <div class="header-left">ロゴ作成予定</div> 14 15 <div class="header-right"> 16 @auth 17 <a href="{{ url('/home') }}">ログアウトはこちら</a> 18 @else 19 <div class=login> 20 <a href="{{ route('login') }}">ログイン</a> 21 </div> 22 <div class=register> 23 @if (Route::has('register')) 24 <a href="{{ route('register') }}">新規会員はこちら</a> 25 @endif 26 </div> 27 @endauth 28 </div> 29 @endif 30 </header> 31 32 <div class="main">mainページ 33 <a href="{{ url('/online_reviews/shop') }}">ショップ一覧</a> 34 </div> 35 </div> 36 </body> 37</html>

shop.blade.php

1//製作中 2<p>shop.blade.php</p> 3<p>shop.blade.php</p>

試したこと

同じコントローラーメソッドを二つ以上宣言することは不可でエラーが発生します。
どのようにしたらできるのでしょうか?調べても中々記事が出てきません。
ご教授のほどよろしくお願いします。

投稿者のバージョン

Laravel Framework 6.20.7
PHP 7.3.23

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

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

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

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

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

guest

回答3

0

ベストアンサー

@indexにこだわる必要なく
topとshopメソッドつくって@top ,@shop にすればいいと思います。

Route::get('/online_reviews/top', 'OnlineReviewsController@top')->name('top.index'); Route::get('/online_reviews/shop', 'OnlineReviewsController@shop')->name('shop.index');
namespace App\Http\Controllers; use Illuminate\Http\Request; class OnlineReviewsController extends Controller { public function top() { return view('online_reviews.top'); } public function shop() { return view('online_reviews.shop'); } }

投稿2021/01/21 07:24

mikkame

総合スコア5036

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

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

0

'/online_reviews/{indexname}'
みたいに変数にして受け取ればよいのでは

php

1public function index($indexname) 2 { 3 return view('online_reviews.'.$indexname); 4 }

ルーティング.ルートパラメータ

調べても中々記事が出てきません。

私が提示したような公式もしくはそれに近いドキュメントから着想を得てください。
下手なキーワードを投入してしまうと泥沼になりかねません。
Laravelに限らず「規則性を見つけて対応する」能力はプログラミングにおいては必須です。
そのために変数なり分岐なりがあるわけなので、そこは考えていきましょう。

投稿2021/01/21 04:49

編集2021/01/21 04:57
m.ts10806

総合スコア80850

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

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

mikkame

2021/01/21 07:15

これだけだと想定しないviewを呼び出される可能性があるのでin_arrayとかパターンマッチで調整した方が良いと思います > Laravelに限らず「規則性を見つけて対応する」能力はプログラミングにおいては必須です。 これははげどです
m.ts10806

2021/01/21 07:21

補足ありがとうございます。 ルーティングについては基本設計レベルで整理した上で対応したほうが良いかもしれませんね。 そうしたら今回の質問のようなアプローチにはならなかった気がします。
guest

0

みなさん、お忙しい中ご回答頂きありがとうございます!!
今回の件で、ルーティングを作成するのに@でメソッドを変えてみることが分かりました!!
実装はまだやってみていないので「規則性を見つけて対応する」ことを重点的に実装してみます。
公式をみてどうしてもわからない時は先ず、実装してみてどのような動きになるのかをみてみることを心掛けます。

投稿2021/01/23 01:26

Tony-Aaron

総合スコア22

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問