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

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

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

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

PHP

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

Q&A

解決済

1回答

1181閲覧

【Apache未使用です】Laravelで画面遷移が出来ません

MasahiroTakata

総合スコア2

Laravel

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

PHP

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

0グッド

0クリップ

投稿2021/07/22 08:04

編集2021/07/22 09:28

ショッピングサイトを作成中です。

やりたい事は、現在カテゴリー一覧を用意しており、カテゴリーを選択すると画面遷移して、対象カテゴリーの商品を一覧表示させたいです。
画面遷移までの実装は完了したのですが、いざ動作させると画面遷移ができず、「404|Not Found」と表示されます。
※php artisan route:listコマンドでルーティングを確認しましたが、問題はありませんでした。

上記について解決策を調査したところ、
①php artisan route:clearコマンドによるルートキャッシュのクリア

②httpd.confファイルに「AllowOverride All」の記述をする

上記2点の解決方法が見つかったのですが、①は試しても解決せず、②はWebサーバー「Apache」を使用している場合の対応で、私はApacheを使っていない為、この対応が出来ません。(Webサーバーはデフォルトで用意されているサーバーを使用しています。)

Webサーバー「Apache」を使っていない状態で、このNot Foundをエラーを解消し、画面遷移できるようにする為にはどうすれば良いか?、どなたか些細なことでも良いので、回答を頂けると幸いです。
よろしくお願い致します。

現状のソースコードを貼らせて頂きます。
web.php

Route::get('/', 'ShoppingController@index'); // 商品一覧(初期画面) Route::get('/shopping/{id}', 'ShoppingController@show'); // 商品詳細 Route::get('/shopping/category={id}', 'ShoppingController@categoryList'); // カテゴリー詳細⇦こちらが画面遷移できません・・・ Route::get('/search', 'SearchController@index'); // 検索機能 Route::get('/custmers/register', 'CustmerController@index'); // カスタマー新規登録 Route::get('/custmers/login', 'CustmerController@login'); // ログイン Route::get('/custmers/logout', 'CustmerController@logout'); // ログアウト Route::get('/buying/buyComfirm', 'BuyingController@index'); // 購入手続き Route::get('/buying/buyingComplete', 'BuyingController@buyingComplete'); // 購入完了 Route::get('/cart', 'ShoppingController@cart'); // カートを閲覧 Route::get('/createReview/index', 'ReviewController@index'); // レビューを書く

コントローラー

class ShoppingController extends Controller { // 商品を一覧表示する public function index (){ $products = Product::paginate(12); // 1ページに12件表示させる return view ('index', [ 'products' => $products, 'submenu' => Category::all(), ]); } // 商品の詳細情報を表示 public function show ($id){ $productDetail = Product::findOrFail($id); // 見つからなかったら例外を返す処理を行ってくれる $categoryProducts = Product::where('category_id',$productDetail["category_id"])->whereNotIn('id',[$id])->get(); // 同カテゴリー商品を取得する(対象商品以外を取得) $productComments = Comment::where('product_id',$productDetail["id"])->get(); // 対象商品に対するコメントも取得する return view('show', [ 'productDetail' => $productDetail, 'categoryProducts' => $categoryProducts, 'productComments' => $productComments, 'submenu' => Category::all(), ]); } // カテゴリー毎の商品一覧を表示(引数はカテゴリーID) // 今回表示させたいメソッドです public function categoryList ($id){ $products = Product::where('category_id', $id)->get(); // 選択したカテゴリーの商品を取得する return view('categoryProduct', [ 'products' => $products, 'submenu' => Category::all(), ]); }

今回表示させたいview’(categoryProduct.blade.php)

@extends('layouts.default') @section('title', 'Shopping Review') @section('css') <link rel="stylesheet" href="{{ asset('css/imagehover.min.css') }}"> @endsection @section('content') @include('submenu', ['categorys' => $submenu]) @if (isset ($products)) <div class = 'content'> @foreach ($products as $product) <figure class="imghvr-fade"> <img src="{{ $product->image }}" class="productImage"> <figcaption> カテゴリー:{{ $product->category->name }}<br/><br/> 商品名:{{ $product->name }}<br/><br/> 価格:{{ $product->price }}円 </figcaption> <a href="{{ action('ShoppingController@show', $product->id) }}"></a> </figure> @endforeach {{ $products->links() }} </div> @endif @endsection

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

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

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

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

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

m.ts10806

2021/07/22 08:05

>Webサーバーはデフォルトで用意されているサーバー って何でしょうか。
MasahiroTakata

2021/07/22 08:09

申し訳ございません。 ローカルサーバーのことです。
m.ts10806

2021/07/22 08:11

サーバーの種類OS  ただ結局「Webサーバー」として何かしら入っているはずです(「Apacheではない」というのが何を以て言っているかも不明ですし)。 対応もそれ次第なので現状では何とも言えません。
m.ts10806

2021/07/22 08:26

ブラウザからアクセスする以上は何かしらのWebサーバが入っています。
MasahiroTakata

2021/07/22 08:29

確認したところ、「Laravel development server」です。 Laravelでサーバー起動時に「php artisan serve」コマンドを使用するのですが、その時に 「Laravel development server started: http://127.0.0.1:8000」が表示されます。
m.ts10806

2021/07/22 08:36

あぁ、内部サーバーですね。 ちなみにどういう風に構築しましたか? 結構それ大事です。 それに404ということはWebサーバーへのリクエストはされていて そのリクエストを受け付けるルーティング(URI)がなかった ということですから、単にパスの問題のような気がします。 View側のコードもあった方がいいかもしれません。
MasahiroTakata

2021/07/22 09:27

はい、内部サーバーです。(ここまですみません。) 構築の流れとしましては、(大まかになりますが) composerとLaravelをインストールして構築しました。(PHPはMacOSで用意されている為、インストール不要、Homebrewは入れていない感じです(brew -vコマンドで確認しても表示されなかった為)) >View側のコードもあった方がいいかもしれません。 了解です、viewのコードを貼らせて頂きます。(最初の質問のところに追加致します。)
guest

回答1

0

ベストアンサー

ビルトインサーバーは使った事無いけど他の一般的なWEBサーバーと同じ動作をするとしたら

Route::get('/shopping/category={id}', 'ShoppingController@categoryList');

この中の={id}がNGです

書くなら

laravel

1Route::get('/shopping/category/{id}', 'ShoppingController@categoryList');

それか普通にクエリパラメーターを受け取る書き方をしましょう

投稿2021/07/22 11:12

hentaiman

総合スコア6415

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

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

MasahiroTakata

2021/07/22 12:31

@hentaimanさん Route::get('/shopping/category/{id}', 'ShoppingController@categoryList'); 上記コードに変更したところ、画面遷移が出来ました! 解決です、回答誠にありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問