Laravel6 でボタンを押すとコントローラーのメソッドを呼び出したいです。
現在、ボタンを押すと投稿記事をtwitterへ投稿する機能の実装を行なっております。
しかし、コントローラーに記載したメソッドをボタンクリックで呼び出す方法がわかりません。。。。
viewファイル
PHP
1 <form method="post" action="post"> 2 @csrf 3 <button type="submit" class="btn btn-danger" onClick="return confirm('Twitterへ投稿しますか?');">Twitterへ投稿</button> 4 </form> 5 6
コントローラー
PHP
1 public function twitterPost(Request $request){ 2 $twitter=new TwitterOAuth( 3 config('services.twitter.client_id'), 4 config('services.twitter.client_secret'), 5 config('services.twitter.access_token'), 6 config('services.twitter.access_secret'), 7 ); 8 9 $twitter->title = request('title'); 10 $twitter->comment = request('comment'); 11 12 $twitter->post("statuses/update", [ 13 "status" => 14 'New Post!' . PHP_EOL . 15 '新しいおすすめの本が投稿されました!' . PHP_EOL . 16 'タイトル「' . $twitter->title . '」' . PHP_EOL . 17 'コメント「' . $twitter->comment . '」' . PHP_EOL . 18 ]); 19 20 return view('mypost'); 21 }
ルート(api.php)
PHP
1Route::post('api/images', 'ImageApiController@twitterPost');
例えば、記事削除のdestroyメソッドはルートの一覧からXXX.destroy のようにルート名が決まっているので、
view
PHP
1 <form method="post" action="{{route('images.destroy', $image)}}"> 2 @csrf 3 @method('delete') 4 <button type="submit" class="btn btn-danger" onClick="return confirm('本当に削除しますか?');">削除</button> 5 </form>
コントローラー
PHP
1 public function destroy(Image $image){ 2 $image->delete(); 3 return redirect()->to('mypost')->with('message', '投稿を削除しました'); 4 }
上記コードで記事の削除は実装できました。
しかし、twitterPostメソッドはルート名の記載がないので、下記のように書くと「Route not defined」となります。
PHP
1 <form method="post" action="{{route('images.twitterPost', $image)}}">
では、どうすればボタンをクリックした際にメソッドを呼び出せるのか、アドバイスお願いします。
回答1件
あなたの回答
tips
プレビュー