Laravel4、最速でユーザーのCRUD構築
タグ: Laravel4
インストールから、ユーザーのCRUD処理までを最速で開発してみましょう。皆さん、「最速」という言葉に弱いのは重々承知していますので、一種の釣り記事です。:D
まあ、せっかくジェネレーターを紹介したので、その活用も兼ね、手順をさらっと復讐してみましょう。
Laravelのインストール
ZIPを落とし、予め次の手順のジェネレーターパッケージをcomposer.jsonに入れておいたほうが、早いかも知れません。タイプとマシンと回線スピードによります。
どなたでも平均して素早く作業が済ませられる、コマンドライン活用でいきましょう。
composer create-project laravel/laravel user-crud --prefer-dist
コメント日本語翻訳版をインストールしたい場合は、以下のコマンドをご利用ください。
composer create-project laravel-ja/laravel user-crud --prefer-dist
user-crudという名前のディレクトリーが生成され、その中にLaravel一式がインストールされます。このインストールの時間が、一番長い待ち時間となるでしょう。
この間に以降を実行すると、多少時間を稼げます。
今後の作業のため、別のターミナルを開くか、新しいタブを作成し、インストールディレクトリーへ移動しておきましょう。
cd user-crud
仮想ホストの設定
PHP5.4以降では、PHPのWebサーバーが利用できますので、この手順は省略できます。もちろん、PHPのサーバーを使用せず、仮想サーバーの設置を行なっても構いません。ご自由にどうぞ。
各自の環境に合わせ、仮想サーバーを設定してください。publicフォルダーが、Webの公開フォルダーになります。
app/storageのパーミッション設定
PHPの動作環境により、これは必要ないかも知れません。
パーミッションを設定します。
chmod -R o+w app/storage
データベースの準備
データベースを作成しましょう。PHPMyAdminのようなGUIツールを使用しても良いですし、コマンドライン一発で作成するのも良いでしょう。
MySQLを使用する場合の例です。
mysql --user=root --password=root -e 'CREATE DATABASE `user-crud` CHARACTER SET utf8 COLLATE utf8_general_ci'
ユーザーとパスワードは共にroot
という、開発環境ではよくあるパターンです。データーベース名はuser-crud
にしています。もちろん、ご自由に調整してください。
ついでに、Laravelの設定ファイルもこれに合わせ変更しましょう。app/config/database.php
です。
インストール直後、デフォルトのDBシステムには、MySQLが設定されています。そのため、MySQLの接続設定だけ変更すれば済みます。
'mysql' => array( 'driver' => 'mysql', 'host' => 'localhost', 'database' => 'user-crud', // DB名 'username' => 'root', // MySQLユーザー名 'password' => 'root', // MySQLパスワード 'charset' => 'utf8', 'collation' => 'utf8_unicode_ci', 'prefix' => '', ),
ジェネレーターのインストール
composer.jsonを直接変更せず、ここはコマンド一発でインストールしましょう。
composer require "way/generators:dev-master"
これも多少、時間がかかりますので、次の段階を行いましょう。
サービスプロバイダーの登録
app/config/app.php
をひらき、サービスプロバイダーを登録します。
次の一行をロードするサービスプロバイダーに付け加えてください。
'Way\Generators\GeneratorsServiceProvider',
ユーザーテーブルのスキャフォールディング
ジェネレータのインストールとプロバイダーの登録が終了したら、スキャフォールディングを実行しましょう。
これもコマンド一発です。
php artisan generate:scaffold user --fields="username:string[30],password:string[64],email:string[320]"
続いて、マイグレーションを実行し、usersテーブルを生成します。
php artisan migrate
アクセス!
WebブラウザでURI、/users
へアクセスしましょう。
ユーザーテーブル一覧が表示されます。最初は、データがありません。'Add new user'リンクをクリックし、ユーザーを付け加えましょう。
そして付け加えると…エラーになります。
これは、Userモデルだけは、Laravelのインストール時点で用意されているため、ジェネレーターが生成を中止し、$rulesプロパティーが設定されていないからです。
app/models/User.php
を開き、プロパティーを追加しましょう。
static public $rules = array ( 'username' => array ( 'required', 'max:30', ), 'password' => array ( 'required', 'max:30', ), 'email' => array ( 'required', 'email', 'max:320', ), ); protected $fillable=array('username', 'password', 'email');
ついでに、複数代入可能フィールドの設定も行なっています。(もちろんこれも、既にモデルファイルが存在していなければ、自動的に生成されます。)
当然ながら、Userモデル以外では、このような手間は必要ありません。(いずれにせよ、実用にするためには、手を入れる必要はあるでしょう。)
再度、実行してみましょう。今度はちゃんと動きます。
実用にするなら、ユーザー認証ができるようにし、最低でもURI/users
には、Authフィルータを賭けておきましょう。
Route::when('users*', 'auth');
ドキュメント記載の通りに
Route::when('users/*', 'auth');
と指定すると、URI/users
にAuthフィルターが適用されません。/users
にもAuthフィルターを適用する時は、スラッシュを省きましょう。ただし、例えば、/users-check
のような、usersで始まるURI全部に一致するようになる副作用があります。この副作用を避けるには、分けて指定しましょう。
Route::when('users', 'auth'); Route::when('users/*', 'auth');
順調に行けば、インストールからCRUD操作ができるまで、全部で5分くらいですね。