ホームページ > バックエンド開発 > PHPチュートリアル > Laravel 4 のページとフォームの検証

Laravel 4 のページとフォームの検証

不言
リリース: 2023-04-01 06:14:01
オリジナル
1595 人が閲覧しました

この記事では主に 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(&#39;admin.pages.index&#39;)->with(&#39;pages&#39;, Page::all());
    }
    public function show($id)
    {
        return \View::make(&#39;admin.pages.show&#39;)->with(&#39;page&#39;, Page::find($id))->withAuthor(Sentry::findUserById(Page::find($id)->user_id)->name);
    }
    public function create()
    {
        return \View::make(&#39;admin.pages.create&#39;);
    }
    public function store()
    {
        $validation = new PageValidator;
        if ($validation->passes())
        {
      $page          = new Page;
      $page->title   = Input::get(&#39;title&#39;);
      $page->body    = Input::get(&#39;body&#39;);
      $page->user_id = Sentry::getUser()->id;
            $page->save();
            Notification::success(&#39;新增页面成功!&#39;);
            return Redirect::route(&#39;admin.pages.edit&#39;, $page->id);
        }
        return Redirect::back()->withInput()->withErrors($validation->errors);
    }
    public function edit($id)
    {
        return \View::make(&#39;admin.pages.edit&#39;)->with(&#39;page&#39;, Page::find($id));
    }
    public function update($id)
    {
        $validation = new PageValidator;
        if ($validation->passes())
        {
      $page          = Page::find($id);
      $page->title   = Input::get(&#39;title&#39;);
      $page->body    = Input::get(&#39;body&#39;);
      $page->user_id = Sentry::getUser()->id;
            $page->save();
            Notification::success(&#39;更新页面成功!&#39;);
            return Redirect::route(&#39;admin.pages.edit&#39;, $page->id);
        }
        return Redirect::back()->withInput()->withErrors($validation->errors);
    }
    public function destroy($id)
    {
        $page = Page::find($id);
        $page->delete();
        Notification::success(&#39;删除成功!&#39;);
        return Redirect::route(&#39;admin.pages.index&#39;);
    }
}
ログイン後にコピー

次に、開きます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 &#39;Notification&#39; not found
ログイン後にコピー

これは、composer パッケージ edvinaskrucas/notification がインストールされていないためです。バージョン 3.0.1 を自分でインストールしてください (Laravel 5 用にバージョン 4 が用意されています)。これは 3 番目のバージョンです。ちょっとした宿題。 require-dev 内のパッケージは開発中にのみ使用されます。

ここでの通知は、より便利な通知コンポーネントです。

これをパッケージ化したら、次を実行します:

composer dump-autoload
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

次に、config/app.php の適切な場所に次の 2 行を追加します:

&#39;Krucas\Notification\NotificationServiceProvider&#39;
ログイン後にコピー
&#39;Notification&#39; => &#39;Krucas\Notification\Facades\Notification&#39;
ログイン後にコピー

適切な場所人々は理解していないため、多くの人が間違いを犯します。解決策も非常に簡単です。

次のインターフェイスが表示されたら、更新してください:


おめでとうございます~ 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(
        &#39;title&#39; => &#39;required&#39;,
        &#39;body&#39;  => &#39;required&#39;,
    );
}
ログイン後にコピー

次に実行します:

composer dump-autoload
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

この時点で、ページ全体のすべての操作を試すことができます。この時点で、ページの管理部分は完了です。

大仕事: 現在、Pages 管理部分は完成していますが、Articles 管理部分はまだ何もありません。Pages のコードを真似して、Pages のような管理システムを完成させてみてください。ヒント: コントローラー、ビュー、フォームの検証を含めます。記事管理部分を完了したら、いよいよ Laravel を使い始めましょう。

以上がこの記事の全内容です。その他の関連コンテンツについては、PHP 中国語 Web サイトをご覧ください。

関連する推奨事項:

Laravel を使用して Gravatar アバター アドレスを生成する

Laravel のスロットル ミドルウェアの障害の問題を解決する方法

PHP で mb_detect_encoding 関数を使用する方法

##

以上がLaravel 4 のページとフォームの検証の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート