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

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

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

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

PHP

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

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

Q&A

解決済

2回答

28704閲覧

[Laravel5.1]ビュー内のformをpostにするとMethodNotAllowedHttpExceptionが起きる

kalon

総合スコア198

Laravel

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

PHP

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

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

0グッド

0クリップ

投稿2016/11/23 08:38

編集2016/11/23 11:27

テキストエリアに文字を入力して送信を押すと、どんな文字が入力されたのかテキストエリアの上に表示されるシンプルなformを試しに書いてみたのですが、
hi.blade.php内のフォームとroutes.phpはpostでデータを渡すように設定しているだけなのですが、
http://localhost:8000/hiにアクセスすると
MethodNotAllowedHttpException in RouteCollection.php line 218:
というエラーが表示されてしまいます。
どのようにしたらpostで値の受け渡しができるようになるでしょうか?

アドバイスとご指導のほどお願いします。

php

1app/Http/routes.php 2 3<?php 4 5/* 6|-------------------------------------------------------------------------- 7| Application Routes 8|-------------------------------------------------------------------------- 9| 10| Here is where you can register all of the routes for an application. 11| It's a breeze. Simply tell Laravel the URIs it should respond to 12| and give it the controller to call when that URI is requested. 13| 14*/ 15 16Route::get('/', function () { 17 #return view('welcome'); 18 return '<html><body><h1>Hello World</h1></body></html>'; 19}); 20 21Route::post('/hi', 'HeloController@hi'); 22

php

1 2app/Http/Controllers/HeloController.php 3 4<?php 5 6namespace App\Http\Controllers; 7 8use Illuminate\Http\Request; 9 10use App\Http\Requests; 11use App\Http\Controllers\Controller; 12 13class HeloController extends Controller 14{ 15 /** 16 * Display a listing of the resource. 17 * 18 * @return \Illuminate\Http\Response 19 */ 20 public function index(Request $request) 21 { 22 23 $data = MyTable::all(); 24 return view('helo', ['message' => 'MyTable List','data' => $data]); 25 } 26 27 public function hi(Request $request) 28 { 29 $res = "you typed: " . $request->input('str'); 30 return view('hi', ['message' => $res]); 31 } 32}

php

1hi.blade.php 2 3<!doctype html> 4<html> 5<head> 6 <title>Sample</title> 7 <style> 8 body { color:gray; } 9 h1 { font-size:18pt; font-weight:bold; } 10 </style> 11</head> 12<body> 13 <h1>Sample</h1> 14 <p><?php echo $message; ?></p> 15 <form method="post" action="/hi"> 16 {{ csrf_field() }} 17 <input type="text" name="str"> 18 <input type="submit"> 19 </form> 20</body>

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

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

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

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

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

guest

回答2

0

ベストアンサー

質問文とそのコードを見る限り、最初にhttp://localhost:8000/hiをアドレスバーに入力してアクセスしていませんか?

※というエスパー気味な想定のもとに回答を書いてみます

フォームを入力するために、一度フォームを表示する必要がるのですが最初にリクエストするのはGETメソッドとなります。
そのため、現時点で定義されているPOSTメソッドに対するアクションとは別にGETメソッドに対する処理も明確に定義してあげる必要があります。

php

1Route::get('/', function () { 2 #return view('welcome'); 3 return '<html><body><h1>Hello World</h1></body></html>'; 4}); 5 6Route::get('/hi', 'HeloController@hi'); 7Route::post('/hi', 'HeloController@hi');

こんな感じに書くことで、最初にアクセスしてもフォームが表示されることになり、表示されたフォームを使ってpostを実行することで、想定している挙動にはできると思います。

投稿2016/11/23 11:44

attakei

総合スコア2738

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

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

kalon

2016/11/23 11:53 編集

正にエスパーでしたw そして仰せの通りRoute::get, Route::postの両方を書いたらエラーがなくなりました。ありがとうございました。
guest

0

どうやら、Route::post('hi', ...);のように、冒頭のスラッシュなしで書くのが正しいようです。

投稿2016/11/23 08:43

maisumakun

総合スコア145183

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

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

kalon

2016/11/23 08:45

Route::post('hi2', 'HeloController@hi2');に書き換えてみましたが、 MethodNotAllowedHttpException in RouteCollection.php line 218:エラーの ままでした。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問