まず、記事の公開を追加するためにルーティングを変更しましょう。
コードをコピーします コードは次のとおりです:
Route::get('articles/create', 'ArticlesController@create');
次にコントローラーを変更します
コードをコピーします コードは次のとおりです:
パブリック関数 create() {
return view('articles.create');
}
ビューを返し、新しいビューを作成します。もちろん、HTML を使用してフォームを直接作成することもできますが、より機能的な方法があります。私たちは Jeffrey Way によって開発されたオープンソース ライブラリ、illuminatehtml を使用します。依存ライブラリをインストールします:
コードをコピーします コードは次のとおりです:
作曲家には、illuminate/html が必要です
Laravelのライブラリを使用するには、laravelに登録する必要があります。 config/app.php には、laravel が提供する Provider フィールドがあり、laravel のライブラリ関数が記述されています。 Laravel Framewirk サービスプロバイダーで...最後に新しい HtmlProvider を追加します
コードをコピーします コードは次のとおりです:
'IlluminateHTMLHtmlServiceProvider',
IlluminateHtmlFromFacade のような長い名前を使用して紹介するのではなく、短い名前が必要です。現在の app.php で aliases セクションを見つけて、最後にエイリアスを追加します。
コードをコピーします コードは次のとおりです:
'フォーム' => 'IlluminateHtmlFormFacade',
'HTML' => 'HtmlHtmlFacade を照らす',
OK、ビューを作成しましょう、views/articles/create.blade.php
リーリー/articles/create にアクセスしてエラーを確認してください。何が問題だったのかテストしてみましょう。コントローラーで次の変更を加えます:
リーリー
はい、そのとおりです。dd() メソッドが show メソッドに追加されています。このメソッドはメッセージを出力するだけで終了します。もう一度 /articles/create にアクセスしてみましょう。 show の出力が表示されます。
create にアクセスしたときにルートが表示されたのはなぜですか? ルートを見て何が起こったのか見てみましょう。
コードをコピーします コードは次のとおりです:
Route::get('articles', 'ArticlesController@index');
Route::get('articles/{id}', 'ArticlesController@show');
Route::get('articles/create', 'ArticlesController@create');
上記は私たちのルートです。articles/{id} はこれがワイルドカードであることを意味し、articles/ 以降のすべてが一致することに注意してください。ご存知ですか?私たちの /articles/create も彼と一致します。ああ、神様!
解決策は順序を調整することです:
コードをコピーします コードは次のとおりです:
Route::get('articles', 'ArticlesController@index');
Route::get('articles/create', 'ArticlesController@create');
Route::get('articles/{id}', 'ArticlesController@show');
つまり、特別なものから通常のものまで、今後のルーティング設定では常にこの問題に注意を払う必要があります。これで、article/create にアクセスでき、すべて問題ありません。
ブラウザでソース コードを確認すると、メソッドとアクションが生成されるだけでなく、ハッカーによる偽造攻撃を避けるためにサーバーがフォームを検証する際に、非表示の _token フィールドも生成されることがわかります。
ビューを変更してフィールドを追加しましょう:
リーリー
フォームが送信されると、実際には post メソッドを使用して Articles/create に送信されますが、RESTful の習慣に従って、ビューの form メソッドを変更して送信パスを設定しましょう。 。
コードをコピーします コードは次のとおりです:
{!! フォーム::open(['url' => '記事']) !!}
次に、ルート内でフォーム送信イベントを処理します。
コードをコピーします コードは次のとおりです:
Route::post('/articles', 'ArticlesController@store');
コントローラーを扱いましょう
リーリー入力フォームのjson結果を直接確認できます。タイトル フィールドの値のみが必要な場合は、 Request::get('title') を使用できます。
データベースに追加するにはどうすればよいですか?モデルの助けを借りて、次の方法を直接採用できます
リーリーとても単純ですが、とても意志的です
一括割り当てを忘れていない場合は、作成中に直接入力できるフィールドを定義するために、モデル内に $fillable 配列を定義しました。
コントローラーを変更し、モデルに追加して、データベースに保存します。
リーリーレコードを追加してみてください。素晴らしいです。でも忘れないでください。 published_at というフィールドもありますので、それを扱いましょう。
リーリー新しいレコードを追加してテストします。
もう一つ問題があります。新しく追加したコントローラーが最前面に表示されるはずです。次のコントローラーを修正しましょう。
リーリー以上がこの記事の全内容です。Laravel5 フレームワークを学習する皆さんのお役に立てれば幸いです。