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

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

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

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

PHP

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

Q&A

解決済

1回答

612閲覧

ネストルーティングに設定したページへ link to route を使って飛ぶ方法。

monahaku

総合スコア35

Laravel

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

PHP

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

0グッド

0クリップ

投稿2022/05/06 16:22

Laravelを使ってネストルーティングを行っていましたが
設定したページへlink to routeを使って飛ぶようにしたいのですが上手く行きません。
飛ぶ先のURIは communities/{id}/topics/{topic} と設定されており
以下の topic.blade.phpからtopics.show.blade.phpに遷移するようにしたいです。

html

1 2 {!! link_to_route('topics.show', $topic->title , ['id' => $topic->id ])!!} 3

php

1 2<?php 3 4namespace App\Http\Controllers; 5 6use App\Community; 7use App\Topic; 8use Illuminate\Http\Request; 9 10class TopicsController extends Controller 11{ 12 /** 13 * Display a listing of the resource. 14 * 15 * @return \Illuminate\Http\Response 16 */ 17 public function index($id) 18 { 19 20 $community = Community::find($id); 21 22 $topics = $community->topics()->get(); 23 24 return view('topics.index', compact('community', 'topics')); 25 } 26 27 /** 28 * Show the form for creating a new resource. 29 * 30 * @return \Illuminate\Http\Response 31 */ 32 public function create($id) 33 { 34 $community = Community::find($id); 35 // 空のトピックインスタンス作成 36 $topic = new Topic(); 37 // view の呼び出し 38 return view('topics.create', compact('community', 'topic')); 39 } 40 41 /** 42 * Store a newly created resource in storage. 43 * 44 * @param \Illuminate\Http\Request $request 45 * @return \Illuminate\Http\Response 46 */ 47 public function store(Request $request) 48 { 49 50 // dd($request); 51 // validation 52 //for image ref) https://qiita.com/maejima_f/items/7691aa9385970ba7e3ed 53 $this->validate($request, [ 54 'title' => 'required', 55 'content' => 'required', 56 'disdosure_range' => 'required', 57 'community_id' => 'required', 58 'image' => [ 59 'required', 60 'file', 61 'mimes:jpeg,jpg,png' 62 ] 63 ]); 64 65 // 入力情報の取得 66 $title = $request->input('title'); 67 $content = $request->input('content'); 68 $disdosure_range = $request->input('disdosure_range'); 69 $community_id = $request->input('community_id'); 70 $file = $request->image; 71 72 // https://qiita.com/ryo-program/items/35bbe8fc3c5da1993366 73 // 画像ファイルのアップロード 74 if($file){ 75 // 現在時刻ともともとのファイル名を組み合わせてランダムなファイル名作成 76 $image = time() . $file->getClientOriginalName(); 77 // アップロードするフォルダ名取得 78 $target_path = public_path('uploads/'); 79 // アップロード処理 80 $file->move($target_path, $image); 81 }else{ 82 // 画像ファイルが選択されていなければ空の文字列をセット 83 $image = ''; 84 } 85 86 87  topic Controller 88 `````` 89 // 入力情報をもとに新しいインスタンス作成 90 // \Auth::user()->topic()->create(['title' => $title, 'content' => $content, 'disdosure_range' => $disdosure_range, 'image' => $image]); 91 $topic = new Topic(); 92 $topic->user_id = \Auth::id(); 93 $topic->community_id = $community_id; 94 $topic->title = $title; 95 $topic->content = $content; 96 $topic->disdosure_range = $disdosure_range; 97 $topic->image = $image; 98 99 $topic->save(); 100 101 // トップページへリダイレクト 102 return redirect('/communities/' . $community_id . '/topics ')->with('flash_message', 'トピックを作成しました'); 103 104 } 105 /** 106 * Display the specified resource. 107 * 108 * @param \App\Topic $topic 109 * @return \Illuminate\Http\Response 110 */ 111 public function show($id) 112 { 113 $topic = Topic::find($id); 114 115 return view('topics.show', compact('topic')); 116 } 117 118 /** 119 * Show the form for editing the specified resource. 120 * 121 * @param \App\Topic $topic 122 * @return \Illuminate\Http\Response 123 */ 124 public function edit(Topic $topic) 125 { 126 // 127 } 128 129 /** 130 * Update the specified resource in storage. 131 * 132 * @param \Illuminate\Http\Request $request 133 * @param \App\Topic $topic 134 * @return \Illuminate\Http\Response 135 */ 136 public function update(Request $request, Topic $topic) 137 { 138 // 139 } 140 141 /** 142 * Remove the specified resource from storage. 143 * 144 * @param \App\Topic $topic 145 * @return \Illuminate\Http\Response 146 */ 147 148} 149 150web.php 151```php 152 153<?php 154 155/* 156|-------------------------------------------------------------------------- 157| Web Routes 158|-------------------------------------------------------------------------- 159| 160| Here is where you can register web routes for your application. These 161| routes are loaded by the RouteServiceProvider within a group which 162| contains the "web" middleware group. Now create something great! 163| 164*/ 165 166// 一般ユーザー 167Route::group(['middleware' => ['guest']], function () { 168 169 // Route::get('/', function () { 170 // return view('welcome'); 171 // }); 172 // プレビューをした瞬間の設定 173 Route::get('/', 'ToppagesController@index')->name('index'); 174 // ログイン認証系 175 Route::get('login', 'Auth\LoginController@showLoginForm')->name('login'); 176 Route::post('login', 'Auth\LoginController@login')->name('login.post'); 177 // ユーザ登録系 178 Route::get('signup', 'Auth\RegisterController@showRegistrationForm')->name('signup.get'); 179 Route::post('signup', 'Auth\RegisterController@register')->name('signup.post'); 180}); 181 182 183// ユーザー認証必要 184Route::group(['middleware' => ['auth']], function () { 185 186 //ログイン後のリダイレクト先 187 Route::get('mypage', function () { 188 return view('mypage'); 189 }); 190 191 // ログアウト 192 Route::get('logout', 'Auth\LoginController@logout')->name('logout.get'); 193 194 // プロフィール関係 195 Route::resource('profiles', 'ProfilesController', ['only' => ['index', 'create', 'store', 'show']]); 196 197 // コミュニティ関係 198 Route::resource('communities', 'CommunitiesController', ['only' => ['index', 'create', 'store', 'show']]); 199 200 201 Route::resource('posts', 'PostsController'); 202 203 204 // コミュニティ申請関係 205 Route::group(['prefix' => 'communities/{id}'], function () { 206 // 投稿一覧 207 Route::resource('participations', 'ParticipationsController', ['only' => ['index', 'create', 'store', 'show', 'update']]); 208 // Route::post('approval', 'ParticipationsController@participation_approval'); 209 210 //トピック関係 211 Route::resource('topics', 'TopicsController', ['only' => ['index', 'create', 'store', 'show']]); 212 213 }); 214 215 216}); 217 218 219 220 221 222 223</div> 224</div> 225 <script src="{{ asset('https://code.jquery.com/jquery-3.3.1.min.js')}}"></script> 226 <script src="{{ asset('/js/community_topics.js')}}"></script> 227</body> 228 229 230 231 232 233 234 235

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

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

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

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

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

guest

回答1

0

自己解決

自己解決しました
らーめんたべたい

投稿2022/05/07 04:08

monahaku

総合スコア35

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問