ホームページ >バックエンド開発 >PHPチュートリアル >[Laravel 5 の基礎] 27 – 終わりとまとめ

[Laravel 5 の基礎] 27 – 終わりとまとめ

WBOY
WBOYオリジナル
2016-06-23 13:02:481158ブラウズ

散発的な結末

はしがき

このセクションはシリーズの最後のセクションです。

手順

開発環境: Windows 7

Laravel バージョン: 5+

IDE: Phpstorm

このセクションはこのシリーズの最後の講義であり、最後を整理して、散在する 2 つの問題を解決しましょう。 。 ブレーク"。

日付についての質問

日付についての質問が 2 つあります:

1. 記事を編集するとき、日付に名前を付けて変更しますが、変更を保存して編集を開くと、日付がまだ元の日付です。

2. 日付は常に当日の日付を表示します。

まず 2 番目の質問を見て、form.blade.php を開いてください:

{!! Form::label('publish_at','Publish On:') !!}{!! Form::date('published_at',Carbon\Carbon::now(),['class'=>'form-control']) !!} 

各記事の日付は CarbonCarbon::now() によって決定されていることがわかります。当然、同じ日です。これを次のように変更します。

{!! Form::label('publish_at','Publish On:') !!}{!! Form::date('published_at',$article->published_at->format('Y-m-d'),['class'=>'form-control']) !!} 

$article オブジェクトからpublished_at 記事公開フィールドの値を取得し、それを年-月-日の形式にフォーマットすることは難しくありません。編集ページを保存して更新すると、成功したようです~

待ってください!記事を作成すると、create メソッドを通じてエラーが報告されることがわかりました。理由は非常に単純です。記事を作成するときに、記事オブジェクト $article がまったく存在しません。これは、記事を変更するときに、記事オブジェクトがすでに作成されているためです。何をするか?

フォーム テンプレートを参照する create.blade.php ページを開き、次のように変更します。

{!! Form::model($article = new \App\Article, ['url'=>'articles']) !!} 

ここでは、open メソッドを使用せず、model メソッドを使用して記事オブジェクトをバインドします。あなたは、新しいものから出てきたことも見ましたが、新しく作成されたものは空のオブジェクトです。 format メソッドは null オブジェクトを操作できないため、この時点で記事を作成してもエラーが報告されます。次に、Article.php に新しいメソッドを編集して追加します。

public function getPublishedAtAttribute($date){    return new Carbon($date);} 

このメソッドの意味は、published_at フィールドの値を取得したい場合、取得できない場合は新しい日付を返すということです。現在の日付。

これで、記事を作成するためにページを更新すると、すべてが正常になります。

タグをクリックできない問題

現在、記事のタグは表示のみでクリックはできません。例えば、ワンクリックでそのタグが付いている記事がすべて一覧表示されます。以下でこの点を完了しましょう。

まず、routes.php を開いてルートを追加します:

Route::get('tags/{tag}','TagsController@show'); 

これは、/tags/tag の URI にアクセスするときに、タグを TagsController の show メソッドに渡すことを意味します。

次に、コマンド ラインで TagsController.php を作成します。

phpartisanmake:controllerTagsController 

TagsController.php を開き、show メソッドを作成します。

public function show(Tag $tag){    return $tag;} 

以下の use AppTag を忘れずに追加して、RouteServiceProvider.php を開き、ブート メソッドを見つけます。

$router->bind('tags',function($name){    return \App\Tag::where('name',$name)->firstOrFail();}); 

これは、タグモデルをルーティングにバインドすることを意味します。これの利点は、laravel がこれらの異なるレイヤー間の論理関係を内部で処理し、それがユーザーにとって透過的であることです。

この時点で、/tags/work や /tags/personal などのタグにアクセスして確認できます。

なるほど、ラベル情報が表示されました。しかし、私たちが望んでいるのは、そのタグが付いている記事のリストを表示することです。

TagsController.php の show メソッドを変更します。

public function show(Tag $tag){    $articles = $tag->articles;    return view('articles.index',compact('articles'));} 

まず、このタグを持つ記事のリストを取得して $articles 変数に保存し、次にこれらの記事オブジェクトをビュー レイヤーに返します。保存後、再度タグページにアクセスすると、タグを保持している記事の一覧と、アクセス可能な記事の一覧が表示されます。

概要

このシリーズでは、ブログを書くことを実践的な方向として、laravel 5.2 について説明し、mvc の各層と詳細から laravel のアプリケーションについて話します。多くのことが関係していますが、結局のところ、基本的なものではありません。しかし、これらの基本的な点は掘り下げる価値があります。

引き続きこのシリーズをご覧いただき、学習していただくことを歓迎します。私も PHP フレームワークに触れるのは初めてですが、言語は異なりますが、アーキテクチャは Java Web フレームワークに基づいています。アイデアは似ていますが、mvc に基づいていますが、いくつか問題があるはずです。学習しながら、みんなで意見交換してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。