まず、ルーティングを変更して、公開する記事を追加しましょう。
リーリー次にコントローラーを変更します
リーリービューを返し、新しいビューを作成します。もちろん、HTML を使用して直接フォームを作成することもできますが、より機能的な方法があります。私たちは Jeffrey Way によって開発されたオープンソース ライブラリ、illuminatehtml を使用します。依存ライブラリをインストールします:
リーリーLaravelのライブラリを使用するには、laravelに登録する必要があります。 config/app.php
中,我们可以看到 laravel 提供的 provider
字段,这里描述了laravel的库功能。在Laravel Framewirk Service Providers...
最后添加我们新增的 HtmlProvider
エイリアスセクションを見つけて最後にエイリアスを追加するためにIlluminateHtmlFromFacade
这么长的名字来引入,我们需要简短的名字。在当前的 app.php
を使用したくありません。
OK、ではビューを作成しましょう、views/articles/create.blade.php
訪問 /articles/create
エラーを確認してください。何が問題だったのかをテストしてみましょう。コントローラーで次の変更を加えます:
はい、そのとおりです。dd()
メソッドを show
メソッドに追加するだけです。このメソッドは単にメッセージを出力して終了します。もう一度 show
方法中添加 dd()
方法,这个方法简单的输出一个信息然后死掉。我们再来访问 /articles/create
,你看到了什么,你看到输出了 show
にアクセスしてみましょう。show
の出力が表示されます。
なぜアクセスするのか create
结果路由给了我们 show
ルーティングと何が起こっているかを見てみましょう。
上記は私たちのルートです。articles/{id}
はこれがワイルドカードであることを意味し、articles/
以降のすべてが一致することに注意してください。うちのarticles/{id}
意味着这是一个通配符,所有在 articles/
后面的东西都会匹配,你知道了么?我们的 /articles/create
も彼に合わせてもらいました。ああ、神様!
解決策は順序を調整することです:
リーリーつまり、特別なものから通常のものまで、今後のルーティング設定では常にこの問題に注意を払う必要があります。今、私たちはarticles/create
を訪れていますが、すべて問題ありません。
ブラウザでソースコードをチェックすると、ハッカーによる偽造攻撃を避けるためにmethod
和 action
同时生成了一个隐藏的 _token
フィールドだけがサーバーのフォーム検証として生成されているわけではないことがわかります。
ビューを変更してフィールドを追加しましょう:
リーリーフォームが送信されるとき、実際には post
メソッドを使用して post
方法提交到 articles/create
上的,但根据RESTful的习惯,我们希望能够 post
到 /articles
に送信されますが、RESTful の習慣に従って、/ に <code>post
できるようにしたいと考えています。記事では、ビューのフォームメソッドを変更し、送信パスを設定しましょう。
次に、ルート内でフォーム送信イベントを処理します。
リーリーコントローラーを扱いましょう
リーリー入力フォームのjson結果を直接確認できます。 title
字段的值,则可以使用 Request::get('titel')
が必要な場合のみ。
データベースに追加するにはどうすればよいですか?モデルの助けを借りて、次の方法を直接採用できます
リーリーとても単純ですが、とても意志的です
Mass Assignment を忘れない場合は、モデルで $fillable
数组,来定义那些字段可以直接在 create
を定義するときに直接入力してください。
コントローラーを変更し、モデルに追加して、データベースに保存します。
リーリーレコードを追加してみてください。素晴らしいです。でも忘れないでください。 published_at
というフィールドもあるので、それを扱いましょう。
新しいレコードを追加してテストします。
もう一つ問題があります。新しく追加したコントローラーが最前面に表示されるはずです。次のコントローラーを修正しましょう。
リーリー以上、Laravel 5 (9) - Form の基本について、さまざまな側面を含めて紹介しましたが、PHP チュートリアルに興味のある友人に役立つことを願っています。