この記事では主に Laravel 4 に関するページとフォームの検証について紹介します。必要な友人が参照できるように共有します。
このチュートリアルはこのシリーズの終わりです。この記事では、Pages の詳細な管理機能、フォームの検証と名前空間の詳細な使用、および通知コンポーネントをより効果的に使用するための、簡単な大きな作業を整理します。
1. ページ管理機能の構築
コマンドの実行:
php artisan generate:controller admin/PagesController
PagesController.php の内容の変更:
<?php namespace App\Controllers\Admin; use Page; use Input, Notification, Redirect, Sentry, Str; use App\Services\Validators\PageValidator; class PagesController extends \BaseController { public function index() { return \View::make('admin.pages.index')->with('pages', Page::all()); } public function show($id) { return \View::make('admin.pages.show')->with('page', Page::find($id))->withAuthor(Sentry::findUserById(Page::find($id)->user_id)->name); } public function create() { return \View::make('admin.pages.create'); } public function store() { $validation = new PageValidator; if ($validation->passes()) { $page = new Page; $page->title = Input::get('title'); $page->body = Input::get('body'); $page->user_id = Sentry::getUser()->id; $page->save(); Notification::success('新增页面成功!'); return Redirect::route('admin.pages.edit', $page->id); } return Redirect::back()->withInput()->withErrors($validation->errors); } public function edit($id) { return \View::make('admin.pages.edit')->with('page', Page::find($id)); } public function update($id) { $validation = new PageValidator; if ($validation->passes()) { $page = Page::find($id); $page->title = Input::get('title'); $page->body = Input::get('body'); $page->user_id = Sentry::getUser()->id; $page->save(); Notification::success('更新页面成功!'); return Redirect::route('admin.pages.edit', $page->id); } return Redirect::back()->withInput()->withErrors($validation->errors); } public function destroy($id) { $page = Page::find($id); $page->delete(); Notification::success('删除成功!'); return Redirect::route('admin.pages.index'); } }
次に、開きますhttp://localhost:8000/admin ページで、前にシードされたアカウントとパスワードを使用してログインすると、エラーが表示されます:
Class App\Controllers\Admin\PagesController does not exist
このファイルは明らかにすでに存在します。なぜ Laravel はこのようなエラーを報告するのでしょうか。存在しない? !理由は 2 番目のチュートリアルにあるので、ここで直接説明します。このクラスはトップレベルの名前空間になく、サブ名前空間に新しいクラスを追加したことを Laravel に伝えていないためです。さあ、教えてください:
composer dump-autoload
OK、更新します。次のエラーが再び表示されます:
View [admin.pages.index] not found.
この時点で、ビュー内のページ フォルダー全体をコピーします。
リフレッシュ。次のエラーが表示されます:
Class 'Notification' not found
これは、composer パッケージ edvinaskrucas/notification がインストールされていないためです。バージョン 3.0.1 を自分でインストールしてください (Laravel 5 用にバージョン 4 が用意されています)。これは 3 番目のバージョンです。ちょっとした宿題。 require-dev 内のパッケージは開発中にのみ使用されます。
ここでの通知は、より便利な通知コンポーネントです。
これをパッケージ化したら、次を実行します:
composer dump-autoload
次に、config/app.php の適切な場所に次の 2 行を追加します:
'Krucas\Notification\NotificationServiceProvider'
'Notification' => 'Krucas\Notification\Facades\Notification'
適切な場所人々は理解していないため、多くの人が間違いを犯します。解決策も非常に簡単です。
次のインターフェイスが表示されたら、更新してください:
おめでとうございます~ Pages の管理ページが完成しました!
2. フォーム検証
Laravel はネイティブで非常に使いやすいフォーム検証関数を提供しますが、検証ルールを再利用する必要がある場合があります。強力な名前空間はコードの再利用を実現するために使用されますが、同時に、Laravel の外部の PHP 名前空間によってもたらされる強力なコンポーネント化機能とモジュールの分離が遅れていることを実証します。
新しい app/services/validators の 2 レベルのフォルダーを作成し、composer.json の autoload > クラスマップの最後に追加します。
"app/services"
これは、composer に「すべて追加してください」と伝えています。ファイルとサブフォルダー内のすべてのファイルを名前空間ツリーにマージします。これにより、app/services の下のクラスが独自の名前空間を宣言できるようになり、サブフォルダー内のファイルもそのサブ名前空間に属することを宣言できます。このフォルダーはフォーム検証クラスター、そしてもちろん他の多くのコンポーネントやモジュールをホストし、完全な分離を可能にします。
追加が完了したら、新しい app/services/validators/Validator.php ファイルを作成します:
<?php namespace App\Services\Validators; abstract class Validator { protected $data; public $errors; public static $rules; public function __construct($data = null) { $this->data = $data ?: \Input::all(); } public function passes() { $validation = \Validator::make($this->data, static::$rules); if ($validation->passes()) return true; $this->errors = $validation->messages(); return false; } }
新しい app/services/validators/PageValidator.php ファイルを作成します:
<?php namespace App\Services\Validators; class PageValidator extends Validator { public static $rules = array( 'title' => 'required', 'body' => 'required', ); }
次に実行します:
composer dump-autoload
この時点で、ページ全体のすべての操作を試すことができます。この時点で、ページの管理部分は完了です。
大仕事: 現在、Pages 管理部分は完成していますが、Articles 管理部分はまだ何もありません。Pages のコードを真似して、Pages のような管理システムを完成させてみてください。ヒント: コントローラー、ビュー、フォームの検証を含めます。記事管理部分を完了したら、いよいよ Laravel を使い始めましょう。
以上がこの記事の全内容です。その他の関連コンテンツについては、PHP 中国語 Web サイトをご覧ください。
関連する推奨事項:
Laravel を使用して Gravatar アバター アドレスを生成する
Laravel のスロットル ミドルウェアの障害の問題を解決する方法
PHP で mb_detect_encoding 関数を使用する方法
##
以上がLaravel 4 のページとフォームの検証の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。