Laravel4には、HtmlFacadeというフォームやHTML要素を自動生成して出力してくれる便利なクラスがありましたが、L5からはデフォルトでは入らなくなりました。
L4ではよく使っていたので、入れておくと楽です。
/composer.jsonに挿入
"require": { "laravel/framework": "~5.0", "illuminate/html": "~5.0" },
以下をシェルで実行
composer update
待つこと数分。。。
/app/config/app.php
他の説明書では、「aliases」の記載が、Htmlとなっているのが多いですが、ここは、HTMLと大文字でないとエラーになります。
'providers' => [ ・ ・ 'Illuminate\Html\HtmlServiceProvider', ], 'aliases' => [ ・ ・ 'Form' => 'Illuminate\Html\FormFacade', 'HTML' => 'Illuminate\Html\HtmlFacade', ]
参考:bladeでの使い方はL4の時と同じです。一つだけ、L5の場合、エスケープさせないときの書き方が三十括弧から、{!!に変わったので、ご注意を
L5でFormの例
{!! Form::open(array('route' => 'contact_store', 'class' => 'form')) !!} ... {!! Form::close() !!}
Laravelを利用する際は、なるべくフレームワークに準拠した名前で命名するのが最初は楽です。変えることもできますが、最初は郷に入ったら郷に従えと。
それでは、Laravelフレームワークに沿ってコントローラーを作る場合、
FooController
Fooが固有の名前+Controllerと名付けましょう。
それではatrisan先生にひな形を生成してもらいます。
php artisan make:controller FooController
すると、app/Http/Cotrollers/FooController.phpができるので、
適宜修正します。L4と比べると、名前空間の記載が必要なので、use〜というのが増えてますね。fooという名前でViewを作ってみます。色々な機能(REST)がデフォルトで入ってきますが、今回はindexだけを作ってみます。
indexとは、http://hostname/foo/ を開いた場合になります。
viewでは、fooはコントローラーで付けた名前で、小文字で指定します。
<?php namespace App\Http\Controllers; use App\Http\Requests; use App\Http\Controllers\Controller; use Illuminate\Http\Request; class FooController extends Controller { /** * Display a listing of the resource. * * @return Response */ public function index() { return view('foo'); } }
コントローラーが出来たら、ルーティングを設定します。ルーティングとは、/foo/でアクセスしたときの参照先である、FooController.phpを指定します。
app/Http/routes.phpを編集します。
以下を追加します。http://hostname/foo/でアクセスしたとき、
FooControllerクラス(FooController.php)を参照すると言う意味です。
routes.phpの使い方は、L4と基本同じです。
Route::resource('foo','FooController');
さて、これで、viewをつくってみましょ。
まずは、簡単にHTMLを表示する例です。
app/resources/views/foo.blade.php
を作成します。
L5には、bootstrapテンプレートが最初から入っているので、テンプレートを拝借してみます。
@extends('app') @section('content') <div class="container"> <div class="row"> <div class="col-md-10 col-md-offset-1"> <div class="panel panel-default"> <div class="panel-heading">Fooのテスト</div> <div class="panel-body"> こんにちは、fooです。表示してまっか? </div> </div> </div> </div> </div> @endsection
問題無ければ表示されるはずです。
この記事はLaravel 5 リリース後のLaravel Framework version 5.0を元に記載しています。
Laravel 5 Seedは、Larabelに先代から存在している、簡単に初期データとして追加できる機能です。
Larabel 4 (L4)との違いはほとんど無いです。ただし、注意点として名前空間を指定する必要があります。
名前空間とはなんぞやという方は別サイトでお調べください。なんだ、ややこしいL5から作業が増えたと思いますが、この名前空間のおかげで、自由な定義や配置ができるようになったそうなので、まあ、仕方ないですね。将来わかったら役に立つ、そういうものだと思いましょう。(かくいう私も勉強中です。。)
今回は、前回準備した、usersテーブルにseedを使って、初期データを登録してみましょう。
/database/seeds/DatabaseSeeder.php
L4と同じく、デフォルトの記述に追加したいクラス名を追加します。
ここでは例として、[UserTableSeeder]を追加
use Illuminate\Database\Seeder;//このへんもL5から追加されています use Illuminate\Database\Eloquent\Model;//このへんもL5から追加されています class DatabaseSeeder extends Seeder { /** * Run the database seeds. * * @return void */ public function run() { Model::unguard(); $this->call('UserTableSeeder');//クラス名 } }
/database/seeds/UserTableSeeder.phpを追加
追加内容はL4とあまり変わりませんが、
重要な点として、名前空間(ここでは、ユーザーテーブルを例にしているのでユーザーテーブルモデル、(/app/user.php)で指定している名前空間を useで追加してください。
(私は、これを忘れて はまりました。。)
<?php use Illuminate\Database\Seeder;//これを追加しないとエラーになります! use App\User;//これを追加しないとエラーになります!Appの名前空間を変えている場合は適宜変更を忘れずに! class UserTableSeeder extends Seeder { public function run() { DB::table('users')->delete(); User::create(array( 'email' => 'foo@bar.com', 'name' => 'admin', 'password' => Hash::make( 'password' ) )); } }
あとの初期データの追加は、今まで通りartisan先生におまかせ
php artisan db:seed
以上で追加完了。追加したIDとパスワードでログインできれば成功です。
エラーが出る場合
use などの名前空間もちゃんと通っているのにクラスが見つからないエラーが出る時があります。
artisan make:コマンド で作った場合はオートローダー処理されますが、手作りでファイルを作るとたいていこれに見舞われます。
exception 'ReflectionException' with message 'Class クラス名TableSeeder does not exist' in /パス/Illuminate/Container/Container.php:776
などと行ってくる場合は、オートローラーの再構築が必要です。
composer dump-autoload
この記事はLaravel 5 リリース後のLaravel Framework version 5.0を元に記載しています。
laravel 5 には、ユーザー認証機能があらかじめ実装されています。
そのままでは利用できないので、実際に利用してみましょう。
まず、データベース設定をします。
.envファイルという隠しファイルにMysqlアカウントを追加します。
.Laravelは、Vance Lucasさんにより作成された、DotEnvを活用しているので、朝飯前です。インストールしたてのLaravelでは、アプリケーションのルートディレクトリーに
.env.example
ファイルが含まれています。Composerを利用してLaravelをインストールしたら、このファイルは自動的に.env
へリネームされます。Composerを使用しない場合は、自分で名前を変更してください。
準備できたら、マイグレーションファイルがL5には最初から存在してるので、
app/database/migrations/2014_10_12_000000_create_users_table.php
app/database/migrations/2014_10_12_100000_create_password_resets_table.php
以下を実行するだけで、このマイグレーションファイルを元に、必要なデータベーステーブルが作成されます。
php aritisan migrate:install
http://localhost:8000/auth/register
にアクセスして、ユーザー登録します。
登録したIDとパスワードでログイン出来ましたね!
この記事はLaravel 5 リリース後のLaravel Framework version 5.0を元に記載しています。
先代と比べてかなり機能が増えました。
あ、一応サーバー機能(serve)も残ったようですね。
Options: --help (-h) Display this help message --quiet (-q) Do not output any message --verbose (-v|vv|vvv) Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug --version (-V) Display this application version --ansi Force ANSI output --no-ansi Disable ANSI output --no-interaction (-n) Do not ask any interactive question --env The environment the command should run under. Available commands: clear-compiled Remove the compiled class file down Put the application into maintenance mode env Display the current framework environment help Displays help for a command inspire Display an inspiring quote list Lists commands migrate Run the database migrations optimize Optimize the framework for better performance serve Serve the application on the PHP development server tinker Interact with your application up Bring the application out of maintenance mode app app:name Set the application namespace auth auth:clear-resets Flush expired password reset tokens cache cache:clear Flush the application cache cache:table Create a migration for the cache database table config config:cache Create a cache file for faster configuration loading config:clear Remove the configuration cache file db db:seed Seed the database with records event event:generate Generate the missing events and handlers based on registration handler handler:command Create a new command handler class handler:event Create a new event handler class key key:generate Set the application key make make:command Create a new command class make:console Create a new Artisan command make:controller Create a new resource controller class make:event Create a new event class make:middleware Create a new middleware class make:migration Create a new migration file make:model Create a new Eloquent model class make:provider Create a new service provider class make:request Create a new form request class migrate migrate:install Create the migration repository migrate:refresh Reset and re-run all migrations migrate:reset Rollback all database migrations migrate:rollback Rollback the last database migration migrate:status Show a list of migrations up/down queue queue:failed List all of the failed queue jobs queue:failed-table Create a migration for the failed queue jobs database table queue:flush Flush all of the failed queue jobs queue:forget Delete a failed queue job queue:listen Listen to a given queue queue:restart Restart queue worker daemons after their current job queue:retry Retry a failed queue job queue:subscribe Subscribe a URL to an Iron.io push queue queue:table Create a migration for the queue jobs database table queue:work Process the next job on a queue route route:cache Create a route cache file for faster route registration route:clear Remove the route cache file route:list List all registered routes schedule schedule:run Run the scheduled commands session session:table Create a migration for the session database table vendor vendor:publish Publish any publishable assets from vendor packages
この記事はLaravel 5 リリース後のLaravel Framework version 5.0を元に記載しています。
これまで、テスト環境をOSXにする場合、いままでは、仮想環境を作ったり、phpを入れて、Apacheを入れて、MAMPでごにょごにょととか、portsとか、とってもめんどくさかったですが、php5.4にはなんと、開発用ローカルサーバー機能があるので、phpだけをつっこめば、ブラウザで検証しながら開発できちゃいます。便利すぎ。
それでは、ちゃちゃっと環境を作ります。10.8、10.9なんかも以下同じやり方でいけます。たぶん。
laravel 5はPHP5.4以上が必要です。最新のPHP5.5系とか5.6系でも当然動くようですが、後々サーバー用意の事を考えると、世の中的に5.4くらいのほうが無難かと思います。で、以下を利用します。
「PHP 5.3/5.4 for OS X 10.6/10.7 as binary package」を利用します。試した中ではこれが一番楽で、依存がありません。
ダウンロード&インストール
$ curl -s http://php-osx.liip.ch/install.sh | bash -s 5.4
環境変数にphp5.4を入れる
vim ~/.bash_profile
以下を追記する
export PATH=/usr/local/php5/bin:$PATH
設定を読み込ませる
source ~/.bash_profile
簡単ですね。
TIPS: Laravel 5は、 <ul> <li>Mcrypt PHP Extension</li> <li>OpenSSL PHP Extension</li> <li>Mbstring PHP Extension</li> </ul> が必要らしいですが、上記でインストールした、php-osx.liip.chに一式入っているので、 別途のphpモジュールインストールは不要です。
次に、Composerのインストール
curl -sS https://getcomposer.org/installer | php -d detect_unicode=Off
パスが通っている場所へリネームして移動
mv composer.phar /usr/local/bin/composer
以上でlaravel 5を入れる準備が出来ました!いやぁ、Macってほんとに便利だね。
それではlaravel 5をいれちゃいます。
以下からLaravel 5を L5 Laravel 4をL4と記します。OSI参照モデルではないですよ。
ここからは、先代のL4とはちとちがい、laravelコマンドを仕込みます。
composer global require "laravel/installer=~1.1"
環境変数にlaravel 5を入れる
vim ~/.bash_profile
以下を追記する
export PATH=~/.composer/vendor/bin:$PATH
設定を読み込ませる
source ~/.bash_profile
これでいつでもL5が利用できます。
L5からは、以下のコマンドでサイトをイニシャライズできます。これは!前より処理が早い。
laravel new foo
L5開発中は、artisan先生からサーバー立ち上げ機能が消えたとの消息筋からの噂もありましたので、phpのサーバー機能で立ち上げてみましょう。
cd foo
php -S localhost:8000 -t public/
さてさて、お約束のLaravel 5画面を拝んでみましょう〜
Simplicity is an acquired taste. – Katharine Gerould
確かに。シンプル。
以上でlaravel 5フレームワークがインストール完了しました。あとは煮るなり焼くなり。
最近のコメント