導入1日目で挫折してヘルプお願いした結果どうにか立ち上がるようになりました!
※メモを書いてます。そのうちきれいにします。(2018年6月)

環境

docker
laravel 5.6
PHP7.1
nginx1.5
mysql5.7

dockerで開発環境

  • PHP7+MYSQL5.6+NGINX+PHPMYADMINでdocker-componese.ymlつくる。
  • NGINXのdefault.confで初期設定、phpのdockerfileでdocker-php-ext-install pdo_mysql pdo_pgsqlとかごにょごにょ。
  • NGINX使うので、mac内部のApache止めた。
  • mysqlのportsは設定したほうがいい。
  • composerをPC本体にインストール
  • docker-compose up -dしてphpのvolumeで指定したフォルダにcomposer経由でlaravelをインストール composer create-project laravel/laravel –prefer-dist
  • wwwの位置修正、docker-componese.yml,nginx
  • localhostつないで、laravelがインストールされたかチェック
  • laradockはいろいろ入りすぎててわかりずらかった。

インストール後にやること

1.PHPのコンテナにexecして(※ココ重要)から、テーブルのマイグレーション
1.config/app.phpの変更
1.ライブラリの追加

laravelを日本語化する

laravel-authのバリデーション日本語化

gitに言語ファイルがアップされてるのでコピる

■Laravel-lang
https://github.com/caouecs/Laravel-lang/tree/master/src

config/app.phpでタイムゾーンを変更

// 'timezone' => 'UTC',
'timezone' => 'Asia/Tokyo',
ソースコード装飾ならGoogle code prettify

config/app.phpで先に地域設定(local)を変更

// 'locale' => 'en',
'locale' => 'ja',
ソースコード装飾ならGoogle code prettify

日本語の翻訳ファイルの作り方

以下のようなi18n用__(‘XXXX’)の文字があったら、直接編集するのではなくWPでゆうところの.po.mo翻訳ファイルを作りたい。

resources/lang/の直下にja.jsonをつくる。スペイン語ならes.json

{
    "Login": "ログイン",
    "Register":"登録",
    "Logout":"ログアウト"
}
ソースコード装飾ならGoogle code prettify

laravel-auth

ログイン認証の追加。ログイン・ユーザー登録用の画面が両方作れる
/login 、 /register が自動で生成される
ログイン後は /homeに移動する

laravel-authのユーザー情報をアップデート+情報追加

laravel-admin

ユーザー管理用のアドミンを生成、権限の追加、バックエンドからのユーザー登録・変更・削除が行える
/admin が自動で生成される

laravel-adminでユーザー権限を追加する

1./admin でサブメニューUser ManagerのPermissionsとrolesでadminをつくる
1.usersで権限を与える
1.app/User.php , /routes/web.php , /app/Http/Kernel.phpに小細工

laravel-adminでユーザー権限追加後その権限を$userで取得

<?php
$user = Auth::user();
$roles = (Auth::check()) ? $user->roles()->get() : false;
?>
@if ( $roles->first()->name == 'admin')
<a href="/admin/">管理画面に移動</a>
@endif
ソースコード装飾ならGoogle code prettify

例:独自USER-dashboardを作成する(初期設定)

  1. /viwe/に/user/とuser.blade.phpを作成

例:独自USER-dashboardにSidebarをinclude

  1. user.blade.phpに@include(‘user.sidebar’) //このuser.Sidebarは定型文
  2. /user/にsidebar.blade.phpを作成

連想配列渡し方1

/routes/web.phpでやる

Route::get('/user', function () {
	$menus = [
		[
			'title' => 'menu1',
			'url' => '#menu1'
		],[
			'title' => 'menu2',
			'url' => '#menu2'
		]
	];
    return view('UserDashBoard',[
    	'menus' => $menus
    ]);
});
ソースコード装飾ならGoogle code prettify

サクラサーバーでlaravelを動かす

以下を参考にさせてもらいました

Laravel5をさくらのレンタルサーバで動かす(スタンダードプラン以上)

  1. おもむろにターミナルを立ち上げる
  2. サクラサーバーにSSHで接続する( $ ssh {アカウント}@{ドメイン名} )
  3. Passwordを入れてサクラに入る
  4. % composer global require 'laravel/installer=~1.1'
  5. % ~/.composer/vendor/bin/laravel new laravel_project
  6. wwwより一個上の階層にlaravel_projectできてる(gitから取る)
  7. 公開URLを「ドメイン名/bangotech/」にしたいので、「/www/bangotech/」を作成
  8. % cp -r ~/laravel_project/public/* ~/www/bangotech/でlaravelのpublicファイルを公開ディレクトリにコピー(FTPソフトでOK)
  9. .htaccessを編集(マルチオプション削除)
  10. /bangotech/index.phpを編集(DIR./../をDIR_./../../)
  11. URLを叩いたらOK

laravel-authを追加

  1. おもむろにターミナルを立ち上げる
  2. サクラサーバーにSSHで接続する( $ ssh {アカウント}@{ドメイン名} )
  3. Passwordを入れてサクラに入る
  4. インストールしたディレクトリに移動( cd laravel_project )
  5. php artisan make:auth

※Could not open input file: artisan が出た場合は、ディレクトリが違う可能性
※DBの初期マイグレーションが終わってなくても勝手にDBmigrateできる

laravel-socialiteを入れる

  1. laravel-authのmigrate時にできた***_create_users_table.phpを修正
  2. php artisan migrate:refreshでDBテーブルを作り直す
  3. app/User.phpを編集
  4. php artisan make:auth
  5. composer require laravel/socialite
  6. config/service.phpと.evn修正
  7. login.Blende.phpにAタグ追加

マークダウンに対応させる(cebe/markdown)

  1. composer require cebe/markdown
  2. text.mbをおく(ex. /public/markdown/text.mb)
  3. viewつくる
  4. cebe/markdownの使用通りに$f = file_get_contentsでtext.mbを取得
  5. cebe/markdownインスタンス呼び出して
  6. 取得した$mbを追加してしたら
  7. echo

ページごとに独自のCSSを追加する

親になるlayout配下のファイルに@yield、子になるページに@sectionで追加

<link href="">
@yield('pagecss')
</head>
viwes/layouts/app.blade.app
ソースコード装飾ならGoogle code prettify
@extends('layouts.app')
@section('pagecss')
<link href="{{ asset('css/ページ名.css') }}" rel="stylesheet">
@endsection
viwes/ページ名.blade.app
ソースコード装飾ならGoogle code prettify

file uploads

単純にformのinput[type=image]でsubmitされた時、publicの特定フォルダにアップする

1.ルーティングのweb.phpでget(初期表示)とpost(POST時)のコントール先を書く(Storeが定型らしい?)

// user/upload
Route::get('user/upload','UploadController@create');
Route::post('user/upload','UploadController@store');
routs/web.php
ソースコード装飾ならGoogle code prettify

2. UploadControllerをつくる php artisan make:Controller Upload
3. use use Illuminate\Http\Request;
4. sroreで受ける( public function store(Request $request){} )
5. バリデーションして、$image->move()で特定のフォルダに移動する
6. return back()->with()で成功時のアナウンス追加

$request->file(‘image’);で取れる値

APIドキュメント
ファイル名(拡張子込):getClientOriginalName();
拡張子:getClientOriginalExtension();

uploadsテーブルにDB登録する

  1. php artisan make:migration Uploads
  2. 作ったファイルにid,url,user_id,created_at,nameついか
  3. php artisan make:model Upload
  4. php artisan make:controller upload
  5. もしくは php artisan make:migration Uploads -mcでモデルとコントローラ一緒につくる

uploadしたfileを一覧で表示

auth認証した上で$user->idとか$user->nameとか

  1. コントローラーの__construct()で$this->middleware(‘auth’)
  2. $user = \Auth::user();
  3. $user->idでOK

MYSQL5.6からバリデーションのnullが厳格になった

ので、laravel-auth+そーしゃらいとのときできれば、$providerと$provider_idになにか入れる