なお、当サイト自体は、Laravel4.2が使われている。Lolipopでcomposeしたところ、この古い版がダウンロードされたのだ!
- Laravelの構造について
-
php artisan make:コマンドを使っての構築は、Laravel直下で行う
※artisanがあるディレクトリのことになる。 -
app/Http/ControllersPHPのプログラムが入る
php artisan make:controller FormControllerXxxxxxController による生成
頭文字は大文字で、XxxxxxController.phpの形式 -
routes/web.phpControllerの実行は、ルーティングにて設定する
Route::get('/mainteMailMagazineSearch', 'MaintMailMagazineController@search');
前者がルート名、後者が実際のルート設定
引数を渡す場合
Route::get('/model/{type?}', 'SampleController@model');
リダイレクト用に省略形が設定できる
Route::get('/mainteMailMagazineSearch', 'MaintMailMagazineController@search')->name('magazine-search');
HTTPメソッドとControllerメソッドの対応
get :一覧(Controller.index)、作成(Controller.create)、詳細(Controller.show)、編集(Controller.edit)
post :作成(Controller.store)※viewがpost渡しの場合
put :編集(Controller.update)
patch :編集(Controller.update)
delete :削除(Controller.destroy)
getとpost両方が使えるように、Route::match(['get','post'], ~);という方法もある
直接Viewに遷移することも可能
Route::view('/welcome', 'welcome'); -
resources/viewsJavaでいうJSPが入る
Laravelは、xxxxx.blade.phpの形式
フォームは、通常の仕様による
※Laravel5.4以前ではフォームヘルパーが使えた
POST渡しする場合は、 -
Requestsフォームリクエストによるバリデーション
Controllerへの直書きによるバリデーションは確認済
以下、個別にRequestを生成した場合
php artisan make:request PostRequestによる生成
各Controllerのsave、updateメソッドに
public function save(PostRequest $request)の形式で組み込む
blade側でのエラー表示
変数$errorsにエラー内容が渡されるので、blade側で
@if (count($errors) > 0)
<div class="alert alert-danger">
<ul>
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
</div>
@endif
のように出力する
※alert-dangerは、bootstrap仕様 -
app/Modelsデーターベースアクセスを行う
Eloquent ORMを使い、Laravel直下で
php artisan make:model User
により生成(Userモデルの場合)するのがよい
- Laravel 認証方式
-
やらない方がいいかも。本来、手順通りに立ち上げれば、こんなことは考える必要もない。別のシステムを組み替えたことでこんなことも考える必要があった。vendor\laravel\framework\src\Illuminate\Auth\EloquentUserProvider.php
public function validateCredentials(UserContract $user, array $credentials)
で、送られてきた'password'と、$user内の'password'をチェックして、存在を確認している。
テーブルのパスワードフィールド名が'password'でないと面倒が起きるので、
手前の
vendor\laravel\framework\src\Illuminate\Auth\SessionGuard.php
public function attempt(array $credentials = [], $remember = false)
で$userが取得出来たらTRUEを返すように変更する
if($user){
//if ($this->hasValidCredentials($user, $credentials)) {
$this->login($user, $remember);
return true;
}
- PDOドライバ
-
データベース関連で、もし、自分の環境でclass 'pdo' not foundが出たら・・・1.php -m で、PDOとpdo_mysql があるか確認
2.なければ、以下の手順をお試しのこと
(1)sudo か root
※以下はrootでの場合
(2)たぶん、依存の問題が出るのでコマンドは以下
# yum install --enablerepo=remi,remi-php72 php-pdo
# yum install --enablerepo=remi,remi-php72 php-mysql
(3)php.iniの修正
[root@ip-172-31-46-105 etc]# vi php.ini
/extensio で検索
i とかで挿入モードにして
自分は、For example の下の空いているところに
extension=pdo.so と入れた
:wq で書き込んで元に戻る
(4)再起動してから、ブラウザを立ち上げてうまくいったか確認