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

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

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

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

PHP

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

1回答

5236閲覧

Laravelでのルーティングで、コントローラー内で条件分岐する方法

naoki_m

総合スコア29

Laravel

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

PHP

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2019/04/02 11:08

前提・実現したいこと

Laravelでメディアを作成しているのですが、例えば「https://example.com/hoge1」にアクセスがあった時、下記のソースにあるように、そのパスをviewに渡す処理を行いたいのですが、下記コードでは404エラーが出て上手くできなかったので、どうか正しいやり方を教えていただければ幸いです。

また、コントローラーの中の$categoryですが、これをDBから取ってきた変数で定義することは可能でしょうか?

そして、もしよろしければ、「https://example.com/hoge1/post1」のような時に、post用のviewを呼び出し、そのポストidがpost1であることを渡す方法も、教えて頂けたら大変助かります。

公式ドキュメントを読んでやっていますが、どうにもできないので、なんとかお助けお願いします。
よろしくお願いします!!

該当のソースコード

コントローラー↓

PHP

1namespace App\Http\Controllers; 2 3use Illuminate\Http\Request; 4use App\Post; 5 6class PostController extends Controller 7{ 8 protected $category = array('hoge1', 'hoge2', 'hoge3', 'hoge4'); 9 public function show($category) 10 { 11 return view('/category', ['category' => $category]); 12 } 13}

web.php↓

PHP

1Route::resource('/', 'PostController');

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

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

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

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

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

m.ts10806

2019/04/02 11:20

ドキュメントのどこを確認してますか?ルーティングが引数渡すようにできてませんが…
naoki_m

2019/04/02 11:49

ご質問ありがとうございます! 下記リンクを参考にしていましたが、引数を渡す部分は自分で書きました。 このような処理をしたい時、他にどのようなアプローチがあるかご教授いただけないでしょうか。 お忙しいところ恐縮ですがよろしくお願いいたします! https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=5&cad=rja&uact=8&ved=2ahUKEwjOpYr-qrHhAhWME7wKHWLjCZcQFjAEegQIBBAB&url=https%3A%2F%2Freadouble.com%2Flaravel%2F5.5%2Fja%2Fcontrollers.html&usg=AOvVaw0xuOrHk4qW6uIrbFXH3qpU
m.ts10806

2019/04/02 12:16

コメント欄ではURLエンコードかかりますし、マークダウンも使えないので質問本文に追記してください。 Googleサイト内検索ですかね…。できればマニュアル直リンクの方が良いですね。コントローラーだけでなくルーティングも見る必要があります。あと「可能ですか?」だと「可能です」としか答えようがないので、質問のしかた工夫してもらえたらと
guest

回答1

0

下記コードでは404エラーが出て上手くできなかったので、どうか正しいやり方を教えていただければ幸いです。

慣れないうちはリソースルートを使う前に基礎的なルート定義を使いましょう。
リソースルートの使い方が間違っています。

Route::resource('/', 'PostController'); ↓ Route::get('/{category}', 'PostController@show');

ルートパラメーターの受け取り方は公式ドキュメントでも説明されています。一応日本語のドキュメントをご紹介しておきます。
https://readouble.com/laravel/5.7/ja/controllers.html#defining-controllers

コントローラーの中の$categoryですが、これをDBから取ってきた変数で定義することは可能でしょうか?

はい、可能です。

もしよろしければ、「https://example.com/hoge1/post1」のような時に、post用のviewを呼び出し、そのポストidがpost1であることを渡す方法も、教えて頂けたら大変助かります。

これは完全な丸投げなので回答を控えます。
とりあえずやってみて躓いたら新規でご質問ください。その際、今回と同じように実際に書いてみたソースコードを質問本文に記載ください。

投稿2019/04/02 12:15

編集2019/04/02 12:41
xenbeat

総合スコア4258

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問