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
2021年05月12日 21時04分
KathrynFiemn さん
cialis vs.levitra <a href="http://tadalafilled.com/">canadian cialis</a> normal dose of cialis
2021年05月13日 03時04分
WvxOK さん
minimalist resume <a href="https://writingacoverletteronline.com/">executive resume writing service</a> actors resume
2021年05月13日 15時27分
LcbJH さん
additional skills for resume <a href="https://writingacoverletteronline.com/">consulting resume</a> things to put on a resume
2021年05月14日 00時17分
ZlrRR さん
sildenafil 20 mg walmart <a href="https://edviagramaster.net/">non prescription viagra</a> sildenafil citrate for sale
2021年05月14日 13時35分
FbhLO さん
sildenafil tablets <a href="https://edviagramaster.net/">pfizer viagra</a> buy sildenafil online usa
2021年05月15日 08時58分
BjlVU さん
viagra <a href="https://sildenafilviagratop.com">viagra street price</a> roman viagra
2021年05月15日 23時10分
ZpoTM さん
which is better viagra or cialis <a href="https://cialisortadalafil.com/">tadalafil side effects</a> cialis generic 2017
2021年05月16日 08時53分
SljSM さん
online viagra prescription <a href="https://sildenafilviagratop.com">sildenafil nitrate</a> over the counter viagra walmart
2021年05月16日 10時50分
TvwRU さん
cialis alternative over the counter <a href="https://cialisortadalafil.com/">buy tadalafil</a> free trial of cialis
2021年05月16日 23時04分
QzqUO さん
canadian cialis <a href="https://topcialistabs.com/">tadalafil side effects</a> were can i buy cialis
2021年05月17日 13時30分
GxeMW さん
cialis canadian pharmacy <a href="https://topcialistabs.com/">generic name for cialis</a> cialis soft
2021年05月18日 06時03分
DdyTH さん
Medication information leaflet. What side effects can this medication cause?
<a href="https://trazodone2020.top">where to get generic trazodone</a> in Canada
Some about meds. Get here.
2021年05月21日 20時51分
FvuYA さん
<a href="https://5bz.ru/">база предприятий россии 2020</a>
2021年07月19日 13時35分
NxyLK さん

<a href="https://krasota4u.ru">trazodone no prescription</a>
2021年07月25日 08時09分
EkiWK さん
Medicine information for patients. Brand names.
<a href="https://plaquenil4people.top">how to get cheap plaquenil no prescription</a> in Canada
All news about medicament. Get here.
2021年07月25日 14時43分
LyhGT さん
Meds prescribing information. Effects of Drug Abuse.
<a href="https://plaquenil4people.top">can you buy cheap plaquenil without insurance</a> in US
Everything trends of medicines. Get now.

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

お名前
コメント