【アメリカで人気なPHPフレームワーク】Laravel4の使い方メモ
Laravelのコマンドメモ
インストールコマンド
$ composer create-project laravel/laravel プロジェクト名 --prefer-dist
サーバー起動
$ php artisan serve
エラー表示
編集ファイル:app/config/app.php
'debug' => true,
マイグレーション
// マイグレーションファイルの生成
$ php artisan migrate:make create_users_table
// マイグレーション
$ php artisan migrate
// ロールバック
$ php artisan migrate:rollback
Pathの取得
<?php
/* 'app'フォルダへのPath */
echo app_path();
/* 'ルート'フォルダへのPath */
echo base_path();
/* 'public'フォルダへのPath */
echo public_path();
/* 'app/storage'フォルダへのPath */
echo storage_path();
?>
ユーザー一覧を表示する
まずはじめに、usersテーブルを作成しておきます。
ターブル名:users
カラム:user
また、app/models/User.phpに以下を追記しておいてください。
※現時点ではおまじないと考えておいてOKです。
// タイムスタンプの無効化
public $timestamps = false;
// 編集可能場所の指定
protected $fillable = ['username', 'password'];
つぎにユーザー表示用のルーティングの設定します。
編集ファイル:app/routes.php
// ブラウザで/usersへアクセスすると実行される
Route::get('users', function(){
// Usrモデルを利用して、ユーザー情報をすべて取得
$users = User::all();
// ビューの読み込み&取得情報を$usersにわたす
// withの使い方:with('データ名', 'わたすデータ')
return View::make('users.index')
->with('users', $users);
});
つぎにview/users/index.blade.phpを作成
以下でユーザー一覧が表示できます。
@foreach($users as $user)
<ul>
<!-- link_to("リンク先のURL", パーマリンク名) -->
<li>{{ link_to("/users/{$user->username}", $user->username) }}</li>
</ul>
@endforeach
DBが空の場合は、以下のように条件分岐も可能。
@if(count($users))
@foreach($users as $user)
<ul>
<li>{{ link_to("/users/{$user->username}", $user->username) }}</li>
</ul>
@endforeach
@else
<h1>no users</h1>
@endif
つぎに、ユーザー名をクリックできるようにします
編集ファイル:app/routes.php
ルーティング設定は以下。
Route::get('users/{username}', function($username){
// select * from users where username = USERNAME LIMIT 1
$user = User::whereUsername($username)->first();
return View::make('users.show', ['user'=>$user]);
});
つぎにview/users/show.blade.phpを作成。
以下の記述で、個別のユーザー名が取得できます。
hello {{ $users->username }}
マスターテンプレートの作成
view/layouts/default.blade.phpを作成します。
<!DOCTYPE HTML>
<html lang="ja">
<head>
<meta charset="utf-8" />
</head>
<body>
@yield('content')
</body>
</html>
つぎにview/users/index.blade.phpに以下を記述します。
『ここから』〜『ここまで』の部分がマスターテンプレート( view/layouts/default.blade.php )に反映されます。
@extends('layouts.default')
@section('content') <!-- ここから -->
<h1>All users</h1>
@foreach($users as $user)
<ul>
<!-- link_to("リンク先のURL", パーマリンク名) -->
<li>{{ link_to("/users/{$user->username}", $user->username) }}</li>
</ul>
@endforeach
@stop <!-- ここまで -->
コントローラーの設定
編集ファイル:app/routes.php
// ブラウザで/usersへアクセスすると、UsersController@indexが読み込まれる
Route::get('users', 'UsersController@index');
つぎにapp/controllers/UsersController.phpを作成します。
以下を記述。
<?php
class UsersController extends BaseController{
public function index(){
// Usrモデルを利用して、ユーザー情報をすべて取得
$users = User::all();
// ビューの読み込み&取得情報を$usersにわたす
return View::make('users.index', ['users' => $users]);
}
リソースコントローラー
ターミナルで以下を実行(scaffoldします)
$ php artisan controller:make UsersController
つぎに、app/routes.phpに以下を記述。
Route::resource('users', 'UsersController');
すると、以下のコントローラーが自動的に利用できるようになります。
変数 | パス | アクション | Route Name |
---|---|---|---|
GET | /users | index | user.index |
GET | /users/create | create | users.create |
POST | /users | store | users.store |
GET | /users/{user} | show | users.show |
GET | /users/{user}/edit | edit | users.edit |
PUT/PATCH | /users/{user} | update | users.update |
DELETE | /users/{user} | destroy | users.destroy |
フォームの作成
編集ファイル:app/controllers/UsersController.php
public function create(){
return View::make('users.create');
}
テンプレートの作成をします。
新規作成ファイル:app/views/users/create.blade.php
@extends('layouts.default')
@section('content')
<h1>Create users</h1>
// フォームのアクション先を指定
{{ Form::open(['route' => 'users.store']) }}
<div>
{{ Form::label('username', 'Username:') }}
{{ Form::input('text', 'username') }}
</div>
<div>
{{ Form::label('password', 'Password:') }}
{{ Form::input('password', 'password') }}
</div>
<div>
{{ Form::submit('Create User') }}
</div>
{{ Form::close() }}
@stop
フォームのPOST内容をDBに保存する
編集ファイル:app/controllers/UsersController.php
public function store(){
// インスタンス化
$user = new User;
$user->username = Input::get('username');
$user->password = Hash::make(Input::get('password'));
$user->save();
return Redirect::route('users.index');
// 上記は↓と同じ意味
// return Redirect::to('/users');
}
ビューでwithの使い方の基礎
ビューにデータを結びつけます。
Route::get('/', function()
{
return View::make('home')->with('name', '山田太郎');
});
上記のデータには以下のようにアクセスできます。
<html>
こんにちは。 <?php echo $name; ?>.
// こんにちは。 山田太郎
</html>
とりあえずメモです。
Laravelまじ便利です。
補足情報
MAMPを使っていて、php artisan
が実行できない場合の対処方法。
/etc/paths
を開き、以下を追記。
/Applications/MAMP/bin/php/php5.5.10/bin
/usr/bin
その後、ターミナルを再起動します。
そして、以下のコマンドでphpのpathを確認します。
where php
ただしくpathが設定されていれば問題ないです。
※P.S:無料メルマガで発信中:過去の僕は「ブログ発信で5億円」を稼ぎました。次は「30億円」を目指します。挑戦しつつ、裏側の思考を「メルマガ」から発信します。不満足なら1秒で解約できます。無料登録は「こちら」です。