前提知識
- SSH
- 暗号や認証の技術を利用して、安全にリモートコンピュータと通信するためのプロトコル。
- URI
- URL⊂URI。URLとの違いはあんまり気にしなくていいかも。
- MVC MVCを理解する
- Model: ビジネスロジックを記述する。
- View: Modelを表示する。
- Controller: Viewの入力を受け取って判断し、Modelを起動する。
Laravel入門
Routing
「どのアドレスにアクセスしたら、どの処理を実行するか」を記述する。routes.phpに記述する。
あくまでルート情報を管理するためのもの。
- 場所: /app/Http/routes.php
-
Route::get( アドレス , 関数 )
- GETアクセスされた際のルーティングを設定する。
- 第一引数のアドレスにアクセスすると、第二引数の関数が実行される。
View
Laravelでは、画面の表示用のテンプレートをあらかじめ用意しておき、それを利用して画面表示を行うことができる。そのテンプレートの置き場所。
- 場所: /resources/views
-
view( テンプレート , 連想配列 )
- テンプレートを表示する。変数に代入することもできる。
routes.php内に記述
Route::get('/helo', function () {
return view('helo',['message' => 'Hello!']);
});
views/helo.php
<!doctype html>
<html>
<head>
<title>Sample</title>
<style>
body { color:gray; }
h1 { font-size:18pt; font-weight:bold; }
</style>
</head>
<body>
<h1>Sample</h1>
<p><?php echo $message; ?></p>
</body>
Controller
画面に表示する詳細などをすべてRoutingに記述するとごちゃごちゃする。
そこで、Controllerでテンプレートの処理などを行う。
- 場所: app/Http/Controllers
-
Route::controller( アドレス , コントローラー名 );
- 指定されたアドレス下にアクセスされると、自動的にそのコントローラーに処理が渡される。
routes.php内に記述
// ~.com/heloにアクセスされると、HeloControllerの関数inputに処理が渡される
Route::get('helo', 'HeloController@input');
heloController.php
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Requests;
use App\Http\Controllers\Controller;
class HeloController extends Controller
{
public function input()
{
// views/helo.phpを表示する
return view('helo', ['message' => 'Hello!']);
}
}
Blade
laravel公式の文法事項
細かい文法はここを参考に。
apple.php
@section('header')〜@stop
orange.php
@yield('header')
apple.phpで記述した中身をorange.phpに出力できる
- @parentの使い方 (よくわからん)
DBの操作
参考
app直下でDBや関数の定義をする
(テーブル名).php
namespace App;
use Illuminate\Database\Eloquent\Model;
class (テーブル名) extends Model{
//laravelでは必要
const CREATED_AT = null;
const UPDATED_AT = null;
//primaryKeyがidの場合は指定しなくても良い
protected $primaryKey = '(プライマリキー名)'
protected $table = '(テーブル名)'
//option
protected $fillabel = ["(カラム名1)","(カラム名2)",...,"(カラム名X)"]
}
//関数(テーブル操作系)
public function ...
Controllerで関数を呼び出す
Controllers/hogeController.php
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Requests;
use App\Http\Controllers\Controller;
use App\(テーブル名_頭大文字);
//DB保存
$テーブル名 = new テーブル名;
$テーブル名->カラム名 = 変数;
.
.
.
$テーブル名->save();
DBを検索して値を取得
HogeClassテーブル
column1 | column2 | column3 |
---|---|---|
... | ... | ... |
欲しい値 | 検索ワード | ほげ |
... | ... | ... |
例
$serchVal = "検索ワード";
$resultVal = Hogeclass::select('column1', 'column2')
->where('column2', '=', $searchVal)
->value("column1");
$resultValに”欲しい値”が格納されている。
DBのレコードを並び替えてビューで表示する
例として、社員(shain)テーブルのレコードを主キー(id)降順で並び替える。
以下の関数をコントローラクラス内に追加。
hogeController.php
public function hoge1(){
$shains = Shains::orderBy('id', 'DESC')->get();
return view('hogeView', ['shains' => $shains]);
}
ビューでの呼び出し方。
hogeView.blade.php
foreach ($shains as $shain) {
echo $shain->name;
}
laravelでフォームを作る
Routing(受け取り先の指定)
routes.php
Route::get('/', 'indexController@input');
Route::post('res', 'indexController@res');
indexController.phpのres関数にpostする。
Controller(フォームから受け取る)
indexController.php res関数
class indexController extends Controller{
public function res(Request $request){
//フォームから受け取る
$フォームのname = $request->input('フォームのname');
.
.
.
//DB保存
}
}
Requestクラスを使うのがlaravel5流らしい。
その他
- PJ/storage/logsにエラーログが出ている。