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

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

新規登録して質問してみよう
ただいま回答率
85.39%
Laravel

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

PHP

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

Q&A

解決済

2回答

1480閲覧

Laravel 複数のURLでのルーティングを実装したい

退会済みユーザー

退会済みユーザー

総合スコア0

Laravel

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

PHP

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

0グッド

0クリップ

投稿2020/09/03 11:28

Laravelで複数のURLを指定したルーティングの実装を行いたいです。
例としては/helpにアクセスした際と/supportにアクセスした際にviewのwelcomeを返したい。

PHP

1Route::view('/help', 'help'); 2Route::view('/support', 'help');

と記述を2つ行ったら思う様にすることができるかと思いますが、記述的にもあまり優れていないかと思います。そこでルーティングの第一引数に複数の値を使用したいのですがそれは可能なのでしょうか?

試したこと

以下の様に第一引数を配列で指定しました。

PHP

1Route::view(['/help', '/support'], 'help');

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

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

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

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

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

guest

回答2

0

ベストアンサー

Route::view() の実装は以下のようになってますよ。

php

1<?php 2 3namespace Illuminate\Routing; 4 5use ArrayObject; 6use Closure; 7use Illuminate\Container\Container; 8use Illuminate\Contracts\Events\Dispatcher; 9use Illuminate\Contracts\Routing\BindingRegistrar; 10use Illuminate\Contracts\Routing\Registrar as RegistrarContract; 11use Illuminate\Contracts\Support\Arrayable; 12use Illuminate\Contracts\Support\Jsonable; 13use Illuminate\Contracts\Support\Responsable; 14use Illuminate\Database\Eloquent\Model; 15use Illuminate\Http\JsonResponse; 16use Illuminate\Http\Request; 17use Illuminate\Http\Response; 18use Illuminate\Routing\Events\RouteMatched; 19use Illuminate\Support\Collection; 20use Illuminate\Support\Str; 21use Illuminate\Support\Traits\Macroable; 22use JsonSerializable; 23use Psr\Http\Message\ResponseInterface as PsrResponseInterface; 24use Symfony\Bridge\PsrHttpMessage\Factory\HttpFoundationFactory; 25use Symfony\Component\HttpFoundation\Response as SymfonyResponse; 26 27/** 28 * @mixin \Illuminate\Routing\RouteRegistrar 29 */ 30class Router implements BindingRegistrar, RegistrarContract 31{ 32 /** 33 * Register a new route that returns a view. 34 * 35 * @param string $uri 36 * @param string $view 37 * @param array $data 38 * @return \Illuminate\Routing\Route 39 */ 40 public function view($uri, $view, $data = []) 41 { 42 return $this->match(['GET', 'HEAD'], $uri, '\Illuminate\Routing\ViewController') 43 ->defaults('view', $view) 44 ->defaults('data', $data); 45 } 46}

投稿2020/09/03 13:58

phper.k

総合スコア3923

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

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

退会済みユーザー

退会済みユーザー

2020/09/04 10:27

申し訳ありません。Route::view()だけでは実際に動いていますのRoute::view()の問題ではないかと思うのですが、、 再度ご確認していただければ幸いです。
phper.k

2020/09/04 10:32

定義のコメント読んでくれてた?
退会済みユーザー

退会済みユーザー

2020/09/04 10:59

すいません。確認できていなかったです。 仕様について理解することができたと思います。 第二引数では文字列型でなければいけなく、配列だとエラーになってしまうという認識であっていますでしょうか?
phper.k

2020/09/04 11:05

第二引数だけじゃないですよね
退会済みユーザー

退会済みユーザー

2020/09/04 13:23

なるほど。ありがとうございます!!
退会済みユーザー

退会済みユーザー

2020/09/04 13:24

複数のURLでのルーティングを行いたい場合というケースは出てくるのでしょうか?ではその時どの様な対策を行っていますか?
phper.k

2020/09/05 03:48

> 複数のURLでのルーティングを行いたい場合 具体的にどういう場合ですか?
退会済みユーザー

退会済みユーザー

2020/09/05 16:19

URL'/'と'/home'のリンクでどちらとも同じURLとして処理したいと思っています。
phper.k

2020/09/05 17:12

リダイレクトすべきですね
退会済みユーザー

退会済みユーザー

2020/09/06 07:26

ありがとうございます!リダイレクトすることで解決できました
guest

0

Route::view('/help', 'help'); Route::view('/support', 'help');

そもそもこれがよろしくないかと。
確かに動きはしますが、SEO的にはNGです。

基本的にURLとコンテンツは1:1になるようしないと、クローラーが適切に読み込みとってくれなかったり、解析が困難になるなどの問題が生るので、同じ画面を表示させるだけなら、/helpか/supportのどちらかに統一すべきかと。

ただ、同じURLでもgetかpostかで分けるなら1行にまとめて書く方法はあるみたいですね…。
(私は初めて知りました。。)

https://www.larajapan.com/2017/12/02/routematch/

投稿2020/09/03 14:01

Suumon

総合スコア211

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.39%

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

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

質問する

関連した質問