PHP

スポンサー広告

Laravel5.4 MySQLと接続その4

2017/08/13

FORMの入力内容をDBに書き込む

Laravel5.4 MySQLと接続その3 の続きです。laravelをインストールしてDBからデータを取得できるようになりましたので入力フォームからデータを取得してDB に書き込もうと思います。

まずはフォームを作成します。

インストールファルダのresources\viewsの中に任意の名前のファイル(form.blade.php)を作成します。

form.blade.php

<!doctype html>
<html lang="{{ app()->getLocale() }}">
    <head>
        <meta charset="utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <link rel="stylesheet" href="">
        <title>入力フォーム</title>
    </head>
    <body>
    	<form action="" method="post">
    	 {{ csrf_field() }}
    	<p>タイトル<input type="text" name="title"</p>
    	<p>要約<input type="text" name="descript"</p>
    	<p>カテゴリ<input type="text" name="category"</p>
    	<p>内容<input type="text" name="comment"</p>
    	<p><input type="submit" value="登録"></p>
    	</form>
    </body>
</html>

form要素の下の行の {{ csrf_field() }}はLaravel 5.4 CSRF保護によればクロス・サイト・リクエスト・フォージェリ攻撃を防止する目的のもので必須のものと思われます。自らランダムトークンをセッションに保存しなくてもいいよってことですね。 {{ csrf_field() }}がないとエラーで動作しません。

作成したフォームを表示するようにweb.phpに追記します。routes/web.phpに

Route::get('form',function(){
	return view('/form');
});

を追記します。public/formでアクセスされた時にform.blade.phpを表示させます。次に送信ボタンを押したときの動作ですが通常form要素のaction属性に遷移しますが、今回action属性は空白です。web.phpにformからpostでデータを送信された時の遷移先を記入します。

Route::post('/form','ArticleController@store');

formページにpostでアクセスされた時はArticleControllerのstoreメソッドを実行してねという意味ですね。

現段階までに、app\Http\controllersの中にArticleController.phpを作っていますのでそれにstoreメソッドを追記します。

ArticleController.php

public function store(Request $request){
    $article= new Article();
    $article->title = $request->title;
    $article->descript = $request->descript;
    $article->category = $request->category;
    $article->comment = $request->comment;
    $article->save();
}

まずはメソッド名であるstoreは任意のものでも構いませんが、 リソースコントローラ

リソースコントローラーにより処理されるアクション

動詞 URI アクション ルート名
GET /photos index photos.index
GET /photos/create create photos.create
POST /photos store photos.store
GET /photos/{photo} show photos.show
GET /photos/{photo}/edit edit photos.edit
PUT/PATCH /photos/{photo} update photos.update
DELETE /photos/{photo} destroy photos.destroy

となっているようですのでstoreに倣っておきます。Request $requestはPOSTで送られてきたデータが入っています。php artisanのmakeでコントローラーを作成すると自動でuse Illuminate\Http\Request;が記述されているはずですので唐突に見えますが、Request型の変数$requestからformのデータが取得できます。$_POSTみたいなものでしょうか。

$article= new Article();でArticleクラスのオブジェクトを新しく作成します。use App\Article;をコントローラーに記述しておきます。これはデータベース接続のモデルの事ですね。このオブジェクトはDBのarticleテーブルのカラム名と同じプロパティを持っているのでそのプロパティにフォームから入力された値を代入してあげます。ほぼ毎回フォームのnameとテーブルのカラムは一致すると思いますので$article->title = $request->title;のような書き方になると思います。

最後に代入を終えたオブジェクトにsaveメソッドを実行することでDBにデータを書き込むことが可能です。

 

rssfeed
コメント
2018年04月21日 06時22分
kzkdhwx さん
9XiVxW <a href="http://isncsmhravmv.com/">isncsmhravmv</a>, [url=http://kvmfptvettgi.com/]kvmfptvettgi[/url], [link=http://wvoglijjxcwv.com/]wvoglijjxcwv[/link], http://lzgzbxxixhye.com/
2020年11月20日 02時13分
Ирина さん
Добрый день.

Я специалист по размещению подборок на всевозможных веб-сайтах.

Я хотела бы вам предложить взаимовыгодное партнерство. До того как сделать первые шаги, я создала опросник, который поможет выяснить всё полностью мелочи совместной работы: https://forms.gle/HvhoZxeE7UWoUfR17

Опросник не долгий, занимает не свыше 3 мин. Личные отклики всегда помогут ускорить наше с вами сотрудничество и прояснить всю информацию.

Заблаговременно благодарю за ответы, и конечно не сомневаюсь на плодотворную совместную работу.

Если у вас присутствует другие моменты по поводу опросника или чего-то другого, не смущайтесь связаться со мной по адресу mypartner@hellopartners.ru

С уважением!
2021年04月26日 15時29分
HokGR さん
Medicament information sheet. What side effects?
<a href="https://lyrica24x7.top">cheap pregabalin for sale</a> in US
Some trends of drug. Get information now.
2021年04月30日 21時23分
JaniceFut さん
is there a generic cialis available in the us <a href="https://mycialistabs.com/">tadalafil online pharmacy</a> price of cialis
2021年04月30日 21時23分
JaniceFut さん
where can i buy cialis <a href="https://mycialistabs.com/">how to take cialis</a> cheapest cialis
2021年05月01日 16時17分
TiffanyVione さん
canadian pharmacy cialis 20mg <a href="https://toptadalafiltabs.com/">cialis dosage</a> viagra cialis levitra
2021年05月03日 23時33分
StellaNum さん
how do you write a conclusion for an essay <a href="https://topessaywriterfas.com/">help with essay</a> how to write a speech title in an essay
2021年05月05日 18時21分
StellaNum さん
how to write expository essay <a href="https://topessaywriterfas.com/">essay scholarships for college students</a> how to write a good definition essay
2021年05月05日 20時35分
RebeccaFrome さん
cleanliness is service essay in hindi <a href="http://writemyessayslfd.com/">writing essay service</a> cbeap essay writing service
2021年05月06日 18時21分
Francesvat さん
viagra jokes <a href="https://mrviagrashop.com">itsoktocry viagra</a> sildenafil citrate 25mg
2021年05月07日 04時19分
Martinahug さん
canadian pharmacy sildenafil <a href="https://mysildenafilkr.com/">sildenafil troche</a> viagra generic cost
2021年05月07日 10時44分
RebeccaFrome さん
definition essay service <a href="http://writemyessayslfd.com/">writing analysis essay</a> writing the perfect essay
2021年05月07日 19時17分
Francesvat さん
sildenafil over the counter cvs <a href="https://mrviagrashop.com">sildenafil citrate 100mg tab</a> viagra buy
2021年05月08日 08時43分
Martinahug さん
generic viagra online <a href="https://mysildenafilkr.com/">https://mysildenafilkr.com/</a> sildenafil citrate
2021年05月11日 19時56分
KathrynFiemn さん
cialis blood pressure <a href="http://tadalafilled.com/">how long does it take cialis to work</a> cialis 5mg price cvs
2021年05月11日 22時14分
EooZL さん
resume work experience <a href="http://coverletterforresumetop.com/">resume help near me</a> the perfect resume

コメントよろしくお願いします。

お名前
コメント