Cakephpでajaxを使って非同期にすっきりpostする

CakephpでFormの値をjQueryを使って非同期にpostの値を渡してみました

まずViewでformをつくります

echo $this->Form->create('sample');
echo $this->Form->checkbox('test');
echo 
// などなど..
echo $this->Form->end();

formのsubmitイベントで、phpへpostします
jQueryのserializeをつかって、formの値をクエリ文字列にします
.serialize() | jQuery API Documentation

$('form').on('submit', function() {                                                               
    event.preventDefault();                                                                       
    event.stopPropagation();                                                                      

    $.ajax({                                                                                      
        type: 'POST',                                                                             
        url: '<?php echo $this->Html->Url(array('action'=>'save'));?>',                   
        data: { data: $(this).serialize() },                                                      
    }).done(function(data) {
        // 後処理                                                                      
    });                                                                                           
});     

コントローラーのsaveアクションへアクセス
これで
$this->data
にふつうのformのpostした値が入ってきます

public function save()
{
    $this->layout = null;
    parse_str($this->data);

    $ret = $this->SomeModel->saveAll($data);
    // などなど..
}

PHP: parse_str – Manual
で、クエリ文字列を変数に落とし込めばそのまま
$dataにまるごとデータが入ってきます
(jQueryでdata: で渡したので)

だいぶCakeらしくできた気がします

UbuntuでGmailを使ってメール送信してみる

Ubuntu 14.04でメール送信してみました
メールサーバーはGmailを使いました

postfixをインストール

$ sudo apt-get install postfix

postfix-install

postfix-install2

Gmailを使うために必要なものをいれます

$ sudo apt-get install sasl2-bin

postfixの設定をします

$ vim /etc/postfix/main.cf

relayhost = [smtp.gmail.com]:587
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options = noanonymous
smtp_sasl_tls_security_options = noanonymous
smtp_sasl_mechanism_filter = plain
smtp_use_tls = yes

を追記

smtp_sasl_password_maps
に設定したファイルを作ります

$ vim /etc/postfix/sasl_passwd

[smtp.gmail.com]:587 (あなたのアカウント)@gmail.com:(パスワード)

(あなたのアカウント)@gmail.com:(パスワード)
はお持ちのアカウントのものを

パスワード入りで危険なので権限をきつくします

$ sudo chown root:root /etc/postfix/sasl_passwd
$ sudo chmod 600 /etc/postfix/sasl_passwd

必要なdbファイルを生成

$ sudo postmap /etc/postfix/sasl_passwd

postfix 再起動

mailコマンドを使いたいので
$ sudo apt-get install mailutils

テスト

$ echo test | mail sample@sample.co.jp
(メールアドレスはご自身のものにしてください)

$ mailq

で、メールがたまってなければOKですがエラーが..

(SASL authentication failed; server smtp.gmail.com[173.194.72.108] said: 534-5.7.9 Application-specific password required. Learn more at?534 5.7.9 http://support.google.com/accounts/bin/answer.py?answer=185833 z4sm6903248pdg.94 - gsmtp)

2段階認証してたアカウントだからかはじかれてるみたいでした
アプリのパスワードの設定をすればいいみたいです

Googleアカウントへアクセス
アプリのパスワードをひとつ作ります

google-mail

できたパスワードを

google-app-password

$ vim /etc/postfix/sasl_passwd

に設定

メール送信テストを再度すると送ることが出来ました

じぶん銀行のカードでATMから引き出すときにロックがかかっている

じぶん銀行の口座をつくって、ATMから引き出すときにエラーが発生
銀行に問い合わせてください、とかなりました

調べたところ
ATMロックのロック解除/再ロックの操作方法を教えてください。
を発見、アプリで解除しました

スマートフォンにじぶん銀行アプリをインストール
ログインして

jibun-bank

ATMロック解除をします、1時間だけか、常に外すかできるようです

jibun-bank2

これでATMでお金をおろせるようになりました

ECCUBEで削除した注文を復活させる

ECCUBE 2.13.3を使っています
削除した注文を復活させたいことがあったのでやってみました

バックアップ取って、データベースを直接触りました
注文の削除は論理削除(レコード削除じゃなく、フラグ立てるだけ)のようです

order_idを指定して、dtb_orderのdel_flgを0に変更してやれば復活

UPDATE  dtb_order SET del_flg = 0 WHERE order_id = 1;

これでいいはず..
自己責任でお願いします

プラグインがあるみたいで、こっちのほうがいいかもしれません(試してません)
削除された受注を復活 / ECサイト構築・リニューアルは「ECオープンプラットフォームEC-CUBE」