ふたりはララベル (Laravel PHP Framework)

PHPフレームワークのLaravelの体験記を書いていきます。こんなタイトルのブログですが萌え系アニメは一秒たりとも観たことがありません。

Xserverにgitをインストールする

ググった情報のコピペだけでは出来なかったよ。まず

wget https://github.com/git/git/archive/master.zip

はOpenSSLのバージョンの関係で失敗するので

wget https://www.kernel.org/pub/software/scm/git/git-2.17.0.tar.gz

にした。ところがmakeが出来なかった。

tar zxvf git-2.17.0.tar.gz
cd git-2.17.0
./configure --prefix=$HOME/opt
make -i all
make -i install
~/opt/bin/git --version

make -i でエラー無視インストールすると上手くいった。

CentOSの構築メモ

yum install --enablerepo=remi,remi-php71 php-mysqlnd
yum install --enablerepo=remi,remi-php71 php-posix

Excelの書式を全て削除するマクロ

Excelで書式が増えすぎた場合は手で削除するのはムリ。マクロで一気に消しましょう。

Sub Excelの書式を全て削除()

    Dim myStyle As style

    On Error Resume Next

    For Each myStyle In ActiveWorkbook.Styles
    
        If Not myStyle.BuiltIn Then
            myStyle.Delete
        End If

    Next

End Sub

PHPがThread Safeなのか?x86なのか64なのか?

こうすりゃわかるのか。

>php -i|find "Thread Safety"
Thread Safety => enabled

>php -i|find "Architecture"
Architecture => x86

humhubをWindowsにインストールする

PHPSNS、どれを使うか悩んでいる。OXWALLは実際に運用したけど、すごく使いにくかった。Minds、Movimもイマイチ。Elggはバージョン3が中々出ない。というわけでhumhubにチャレンジ。Yiiフレームワークはあまり好きじゃないんだが…。

composer-asset-pluginをインストール

D:\xampp\source\humhub>composer global require "fxp/composer-asset-plugin:^1.2.0"
Changed current directory to C:/Users/AppData/Roaming/Composer./composer.json has been updated
Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 1 install, 0 updates, 0 removals
  - Installing fxp/composer-asset-plugin (v1.4.2): Downloading (100%)
Writing lock file
Generating autoload files

php.iniの「php_ldap.dll」のコメントを外す

これでComposer Updateをかけた。すげえ時間かかる。

LaravelでPHPUnitを使ってNo tests executed!

Laravel5.4でPHPUnit6を使ったときに「No tests executed!」が出る。Laravel5.4はPhpunit6に対応していないので、vendor内にあるphpunitを使うと解決できる。

php vendor\phpunit\phpunit\phpunit

Image source not readableの対処

大きな画像を送って「Image source not readable」が出た場合はphp.iniの「upload_max_filesize」の値を大きくすれば対処できる。

storeとupdateで共通で使えるバリデーション

storeとupdateでバリデーションを共通化したいけど、updateの時だけユニークチェックしたい。という時の書き方。あまりキレイじゃないね。。。

public function valid()
{
  $validator = \Validator::make($this->toArray(), [
    'code' => 'required|max:255',
  ]);

  if ($this->id && !$validator->fails()) {
    $validator = \Validator::make($this->toArray(), [
      'code' => 'unique:titles,code,' . $this->id
    ]);
  }

  return $validator;
}

Requestに値を入れてテストする

コントローラーをテストする時にRequestの変数に値を入れる。

$request = new Request;

$request->merge([
'name' => 'testname',
]);

$controller = new \Lb\Http\Controllers\TitleController($request);

$controller->update($request, 100);

$title = Title::find(100);

$this->assertEquals($title->name, 'testname');

長くなったLaravelのModelを分割

長くなったLaravelのModelを分割する方法の一つとして、私は上位モデルを使うときがある。


Titleモデルのうち、Updateに関する機能を独立させるときはこんな感じ。テーブル名を指定するのがポイント。

class TitleUpdate extends Title
{
 protected $table = 'titles';

 public function myvalidator($request)
 {
	return \Validator::make($request->toArray(), [
		'releasedate' => 'date_format:Y/m/d',
	]);
 }
}

PostgreSQLで大文字小文字検索

「iLIKE」を使えば、PostgreSQLで大文字小文字関係なく検索できる。

Mymodel::where('name', 'iLIKE', $name)->first();

Laravel5.3のログインをメールアドレス以外にする

Laravel5.3で、またやり方が変わったみたい。編集対象のファイルは

App\Http\Controllers\Auth\LoginController.php
    public function username()
    {
        return 'username';
    }

XserverではOwncloud9以降がインストールできない

XserverではOwncloud9以降がインストールできなかった。libxml2のバージョンが低いから。これは困った。しょうがいないからOwncloud8を使うしかないんだけど、Owncloud8だとPHP7に対応していない。つまりXserverのPHPが7以上にあげられないのだ。

Laravel5.2からコンテナ登録方法が変わった

古い書き方

$this->app['myapp'] = $this->app->share(function($app)
{
 return new Myapp;
});

新しい書き方

$this->app->singleton('myapp',function($app)
{
 return new Myapp;
});

Laravel5でajax

Laravel5.2系の古いバージョンでajax動かしていたんだけど、5.2系の新しいバージョンだと動かない。よくわからないけどTOKEN入れないとダメらしい。

js側

$.ajaxSetup({
 headers: {
  'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
 }
});

ヘッダ

<meta name="csrf-token" content="{{ csrf_token() }}" />