Laravel 管理画面

管理画面を作る
migrationのファイルを、usersのテーブルを作るやつをコピーした。

config/auth.php
これを触るみたいだ。
ーーー
もう一回。仕切り直し。

管理用のユーザーテーブルを作らないといけない。
1.modelを作ります。 php artisan make:model Adminuser -m
これで、モデルとmigrationのファイルができる。テーブルはできない。
2.usersのmigrationファイルをコピーして、Adminuserに貼り付ける。
そしてmigrateを実行する
3.「/config/auth.php」を編集する。GuardとProviderを編集追加する
4. RegisterAdminController.phpを作る。(RegisterControllerをコピってぺ)

5.bladeファイルをコピってぺ。(login.bladeとregister.bladeをコピって、adminlogin.bladeとadminregister.bladeを作ります)

Laravel 認証・バリデート

use Illuminate\Foundation\Auth\AuthenticatesUsers;
これは、 /vendor/laravel/framework/src/Illuminate/Foundation/Auth ここにあります。

ーーー

$validate_rule = [
‘name_e’ => ‘required’,
‘password_e’ => ‘numeric|between:0,9999’
];
$this->validate( $request, $validate_rule );

リクエストで受け取った値を、validate関数で検証する。ここでバリデーションに失敗した場合、validate以降の処理に進まずに、フォームに戻る。その際に$errorsを持って返る。

ーーー
オリジナル・バリデータ

ーーー
【認証のガードとは】
Guard:Config/auth.php
上のファイルにguardsの設定がある。Guardにはsessionとtokenがある。

Laravel データベースの使い方

Eloquentは、モデルを作らないと動かないぽい。
Eloquentは作成日時と更新日時を自動的に更新してくれる機能があるぽい。

class Registration extends Model
{
protected $fillable = [‘date’, ‘orderNo’, ‘memberNo’, ‘customerNo’, ‘roomNo’];
}

モデルで、fillableに変更するカラムを設定して、
$res = Registration::create($param);

これで、insertする。insertを使うよりも、Laravelの機能を使うので安全面などで諸々と優れているらしい。

$res = Registration::find(1);
プライマリーキーを指定して1件取得する。

ーーー

firstOrCreate() : データがあれば取得。なければ作成する。
updateOrCreate() : データがあれば更新。なければ作成する。

Laravel モデルの使い方

モデルの存在を忘れていた。

artisanでモデルのファイルを作成する。
/usr/local/php7.1/bin/php artisan make:model Reserve
ファイル名はテーブル名称と同じにする。(単数形にする。テーブル名称がReservesの場合は、モデルの名前はReserve)

モデルがあるだけで、コントローラーでは、モデル名称でデータベースを触ることができる。

use App\Reserve;
これを書いて。
$items = Reserve::all();
これで取れる。

$exist = Reserve::where(‘date’, $ite[0])->value($ite[1]);
こんな感じでコントローラーに書く。
モデルに書くほうがいいのかな。わからない。

laravel レイアウト

sectionとyeildは対になっている。
テンプレート側で、yieldを入れておくと、実体側のsectionを読み込む。

テンプレートの読み込みはextendで行う。
@extends(‘layouts.common’)
viewsフォルダの下のlayoutsフォルダの中のcommon.blade.phpを継承する。

ーー
実体=viewsの中のBladeファイル
テンプレート=Layoutsフォルダを作って配置

置く場所が違う(別の場所に置いている)だけで、テンプレートと実体のファイルは同じ「Blade」ファイルです。
1.routesでviewsのファイルを指定するとそれを表示させるようにする。
2.viewファイルに、extendが記載されていたらそのファイルを取りに行く。
3.テンプレートファイルに、yieldが設定されている場合、yieldに設定されているcontentをviewファイルから探す。パーツがテンプレートを取りに行くイメージ。取得したテンプレートに自分のパーツをはめ込む。

ーー
Bladeのコメントは、{{– コメントの内容 –}}と記述しよう。

ーー
@include(‘layouts.header’)
インクルードする場合の、相対パスはどこから見たアドレスになるのだろう?
おそらく、routesで見にいったファイルから見たアドレスになるのではないかと思う。

Laravel 認証

ユーザー名とパスワードでログイン
LoginController.phpを編集する

public function username()
{
return ‘name’;
}

この関数を追加して、フォームのnameをname(データベースのカラム名)にする

composerを使う

ロリポップでコンポーザーを使う。
PHPにパスを通すことができないので、PHPの場所を指定して使う。

$ /usr/local/php7.1/bin/php composer.phar dump-autoload

composerではなく、composer.pharなのがなぜか?

Laravelで新しいクラスを作った時に、dump-autoloadしないといけないのだけど、だいぶ苦戦する。面倒。
dump-autoloadは、パスを通すようなことをしているのだと思う。

composer.jsonに、新しく作ったクラスファイルを置いているファイルのパスを追記する。
{
“require”: {
“google/apiclient”: “^2.0”
},
“autoload”: {
“classmap”: [“kobeu/kcs/app/Libs”]
}
}
requireは最初から書いてあった。autoloadを追記した。
classmapというのは、名前空間?みたいなもの。他の書き方もあって、それぞれメリットがあるようです。この辺りはおそらく深い。
config/app.phpにも、追記が必要。エイリアスaliasの設定も必要。

‘Common’ => App\Libs::class

これを追記した。
追加したクラスは、インスタンス化してから使う。下みたいに。

$common = new Common();
$string = $common->h($string);

Laravel データベーステーブルの作成

migrationという機能を使ってテーブルを作ります。
databese/migrations

このフォルダにマイグレーションのファイルを入れる。
プロジェクトのフォルダに移動して以下のコマンドを実行するとテーブルが作成される。

ファイルは、ぜひ、artisanを使いましょう。
$ /usr/local/php7.1/bin/php artisan make:migration create_registrations_table

$ /usr/local/php7.1/bin/php artisan migrate

migrationは、up()でテーブルを作成down()で元に戻す処理をする。元に戻す(?)

すでにテーブルがある場合はmigrateでエラーが出るので、現在あるテーブルを破棄して再度実行する場合はmigrate:freshを実行する。

ロリポップではphp7.1にパスが通っていないので、
/usr/local/php7.1/bin/php
これでphpを実行すると良い。そうでないとエラーになります。

ロリポップでmigrationするとSyntax Errorが発生する。
MySQLのバージョンがよくないということで、下の内容でconfig/database.phpを編集する。
(MySQL5.6ではエラーが出るということ)
‘charset’ => ‘utf8’,
‘collation’ => ‘utf8_unicode_ci’,


NULLを許可する
$table->string(‘init_password’)->nullable();

https://readouble.com/laravel/5.5/ja/migrations.html

ロリポップにLaravelを導入

ロリポップをSSHに対応する。
ターミナルでSSHにログインする
ssh お客様のSSHアカウント名@お客様のホスト名 -p 2222

入れなかった。以前にログインした時と、RSAというものが変わってしまったから?
SSHのFingerの何かは、ローカルに保存されている。それとサーバーに保存されているものが異なるため弾かれているらしい。

ローカルに保存されているものを消してもう一度保存し直す。

保存場所は
~/.ssh/knows_host
ここのロリポップのFinger何やらの行を削除して試してみたところ、パスフレーズを求められた。
ロリポップのユーザー情報に掲載されていたパスフレーズを4回入れたらログインできた。
4回入れるって何?

ロリポップにターミナルで入ることができたので、次にcomposerをインストールします。
/usr/local/php7.1/bin/php -r “eval(‘?>’.file_get_contents(‘https://getcomposer.org/installer’));”

これでcomposerをインストールできました。

次に、phpへのパスを通す。
export PATH=”$PATH:/usr/local/php7.1/bin”
(この設定はうまくいってるのかどうかわからない)

/usr/local/php7.1/bin/php composer.phar create-project –prefer-dist laravel/laravel フォルダ名 “5.5.*”
composer.pharが置いてあるファイルに移動して、実行しないといけません。
すでに存在するフォルダにインストールしようとすると失敗するみたい。インストールフォルダを指定するとフォルダを作ってくれる。

composerでインストールしてもしばらくファイルが表示されない。
SSHでアクセスしてからFTPでアクセスするとファイルが見えた。

インストールしたフォルダにアクセスしても500で表示されなかった。
サブドメインを設定して、php7.1を設定。Laravelはphp7.1でないと動かないようです。
サブドメインにアクセスしたらLaravelが表示されました。

次はデータベースを作成する。
ロリポップの管理画面でデータベースを作成。
.envファイルを編集。

データベースはできたので、次はmigrateします。
デフォルトで必要なテーブルがあるらしいのです。
/usr/local/php7.1/bin/php artisan migrate
コマンドを実行すると下のメッセージが表示される。
Could not open input file: artisan

これはartisanを動かすために、Laravelのフォルダに移動しないといけない。
laravelを入れたフォルダでartisanを実行したらmigrateできました。
これでとりあえず、Laravelをロリポップに導入することができた。
意外とスムーズに行きましたね。

仮想環境をローカルで動かすと負担が大きいから、ロリポップでもいいから外に置いた方が良い。と思う。

Laravel 起動

ターミナルで、「~/homestead」に移動して、「vagrant up」する。
これで起動する。
仮想環境が起動するということ。

hostに登録しているので、homestead.testにアクセスするとLaravelのサイトを見ることができる。
「vagrant halt」すると、仮想環境が終了する。