Amazon Linux – PostgreSQL・Nginx・FuelPHP


インストール

参考:
Amazon Linux AMIにpostgresqlをインストールする
チュートリアル: Amazon Linux への LAMP ウェブサーバーのインストール

yumをアップデートして、phpとgitとvimとnginx入れた。アパッチとMySQLも入れた。

postgresql入れた。

エラーでた

php56と指定しないといけないっぽい。

これで必要なの入った。

postgreSQLの設定する

postgresユーザにパスワード設定

postgresユーザに切り替える

基本データベース生成とサービス開始

データベース作成する

NginxでPHP使えるようにする

参考:nginxでphpを使う(CentOS6.5)

php-fpmをインストールする

php-fpmの設定をする

下記のwww.confのuserとかgroupがapacheになっているので、nginxに変更します。

NginxでFuelphpが動くようにする

下記、nginx.confを修正していく。

下記箇所を、/usr/share/nginx/hoge/publicとかにする。

参考:http://fuelphp.jp/docs/1.8/installation/instructions.html
下記のように変更する。

nginxとphp-fpmを再起動する

FuelPHPをcloneする

FuelPHPはローカルで作ってるやつをcloneする。

FuelPHPのcomposer installする

phpPgAdminインストール

参考:phpPgAdminのインストール – CentOS6.5(Vagrant)

とりあえず、ローカルで上記サイトに記載のURLから、ダウンロードして、展開して、gitリポジトリに追加して、pullした。常時使える必要はなかったので、nginxのrootを変更してちょっとだけ使った。

fuelphp1.8 – コアクラスのカスタマイズ

参考:http://fuelphp.jp/docs/1.8/general/extending_core.html#extend_and_replace

type=”file”のformに、「required」というバリデーションルールを適用しても、うまく動作しない。ファイルをアップロードしても、ファイルがアップロードしたことにならない。だから、requiredというルールを適用するのをやめたんだけど、そうすると、form.phpで設定できる、required_markの表示がなくなるので、それも嫌だ。required_markというのは、requiredルールを設定してあるFieldをview等でbuildした時に、勝手に必須項目であることを示す文字列等を表示してくるものであります。なので、Fieldをbuild関数をいじって、required_markを表示する条件を変更してみようと思った。

fuel/core/classes/fieldset/field.phpの591行目に、下記があります。

get_attributeで「required」があれば、form.phpのrequired_markに設定している文字列を返しています。なので、get_attributeに渡すものを「required」だけではなく、array(‘required’, ‘required_upload’)にしてみます。でも、fuel/core内を勝手にいじってはダメなので、下記のようにします。

コアクラスを継承したクラスを作成する

fuel/app/classes/fieldset/field.phpを下記のように作成する。

これを、fuel/app/bootstrap.phpを設定して、読み込めるようにします。

bootstrap.phpの設定

fuelphp 1.8 – カスタムバリデーション

どうも、Uploadをすると、Uploadクラスのバリデーションを使うことになりますが、これとfieldsetのValidationクラスとの連動がいまいちうまくできない。Fieldsetはform.phpの、inline_errorsをtrueにすると勝手にエラーを表示してくれるが、このエラーに自動的にuploadのエラーも連動するようにしたい。他にやり方があるかもしれないが、Upload関連のエラーをValidationのカスタマイズルールとして作成することで、実現してみる。

モデルでFieldsetを作成する

fileというフィールドに、uploadというルールを設定している。これはデフォルトではないので、カスタマイズルールになります。引数は、フィールド名。あとでこのuploadというルールを作成します。

カスタムバリデーションのクラスファイルを作成する

fuel/app/classes/model/validation/upload.phpというのを作成してみる。

コントローラを作成する

フィールドセットを作って、Upload:processを走らせて、フィールドセットからバリデーションを取りだして、バリデーションにuploadルールを読めるように設定する。

View

uploadは、enctypeの表示が必要。Fieldsetのフィールドをbuildしてるだけ。bootstrapを使っているので、set_attributeでform-controlクラスを設定している。

fuelphp1.8 – Formとバリデーション

fieldsetを使うと、入力した内容を保持できるし、バリデーションチェックも簡単に行える。エラーも自動で表示できる。core/config/form.phpにformを表示する際のHTMLの設定が書いてあるので、これをシンプルにすることで、多様なデザインにもデザイナがviewの設定のみで大体対応できるようになるかなと思った。

form.phpの設定項目

引用:FuelPHPのFieldsetクラスをまとめてみた。1

項目名 説明
form_method formのmethod属性の値
form_template formを作る際のテンプレートです。{open}がformの開始、{fields}がフィールド部分、{close}がformの終了です。こちらはFormクラスで使用されます。
fieldset_template ↑のfieldset版。
field_template fieldのテンプレート。そのままですね。
multi_field_template fieldが複数だった時のテンプレート。{fields}から{fields}までが項目のループ部分。セレクトボックスはどうやってるのかは不明
error_template エラーのテンプレート。$user_form->validation()->error()メソッドで使われている模様。
required_mark {required}に対応する値を指定。
inline_errors エラーを表示するかどうか。
error_class エラー表示に使うクラス名。デフォルトではtdに指定しているのでこのクラスに対してエラーだった時のbackground-color等を指定することになる。

バリデーションエラーメッセージの日本語化

・core/lang/en/validation.phpを、app/lang/ja/にコピーして編集する。
・app/config/config.phpの「language」を「ja」に設定する。

モデルの例

app/config/form.phpのfield_templateの例

コントローラの例

fuelphp 1.8 – Auth – simpleauthで使うデフォルトのusersテーブル

参考:[FuelPHP] FuelPHPで作るログイン管理

fuelphp – メール送信

参考:
Email パッケージの使用方法
Fuelphp:Fuelphpで基本的なメール送信処理

コントローラーで下記を読み込むらしい。

下記みたいな感じでとりあえずできた。日本語文字化け対策で、上記参考サイトの、■ Emailクラスの設定ファイルというところの対策をやった方がいいらしい。

fuelphp – csvインポート

下記をformat.phpにつくった。

コントローラで、Uploadを使ってアプッロードファイルのチェックをしてから、上記関数を呼び出し、CSVデータを配列化した。

fuelphp – csv出力

参考:FuelPHPでCSVの出力

app/classes/format.php を作成

上記参考サイトどおりにやる

app/bootstrap.php の一部を修正

上記参考サイトどおりにやる

コントローラーにPDF出力アクションを追加

例えばcompanyコントローラーにaction_pdfを追加する

fuelphp – マイグレーション

cakePHPのmigrationsプラグインはありがたいものではあるものの微妙だと思っていたのですが、あれの場合、データベースを色々いじってから、現状のschemaファイルとデータベースの現状との差分を勝手に確認してくれるというものでした。どうもfuelphpのマイグレーションというのはそういう機能はないのかなあと、今思っております。

参考:fuelPHP での Migration の使い方

カラムの追加をoilのmigrationを使って実行できます。

例えば、oil generate migration add_hoge_to_shops hoge:varcharといった感じでやります。
これにより、カラムを追加する為の新しいマイグレーションファイルが作成されます。

databaseを最新の状態にするのは、

のようです。これによって作成したマイグレーションファイルの内容が、databaseに反映されます。

できたのですが、nullがNGになっておりました。nullをOKにしたり、varcharの最大文字数設定の方法とかが分かりません。

参考:
Generate
マイグレーション

まあ、migrationsファイルを直接編集すればいいのかなと思いますが、oilコマンドでもできるようです。
参考:fuelPHP での Migration の使い方 (2)

便利でした

fuelphp – アクション別に読み込みたいjsファイルをtemplateに設定する

参考:
Asset クラス
共通のテンプレートにアクション毎に設定できる追加ファイルを読み込ませる

cakePHPですと、

みたいな感じですが、fuelphpの場合も似てました。テンプレート側で、

としておきまして、view側で、

のようにします。

の’js’はグループ名です。

の第三引数もグループ名です。第四引数をtrueにすると、関数を呼出した位置にそのまま表示されるようです。falseにするとグループをrenderしてるところにまとめて表示されます。これによって、例えばテンプレートのフッター部分のjqueryを読み込んだ後で読み込みたいとかが可能になります。ちなみに、hoge.jsというjsファイルを呼出してますが、jsファイルではなく、そのままスクリプトを書いてしまう場合についてはどうやるのか分かりませんでした。