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らしくできた気がします

vagrant上のECCUBEでオーナーズストアを自身にするとエラーが発生する

ECCUBEの公式サイトに公開されてないプラグインをインストールする際、
オーナーズストアを一旦自分のサーバーに変更してするような手順があったのでためしました

ECCUBEの管理画面へログインして、システム設定>パラメータ設定で

  • OSTORE_URL
  • OSTORE_SSLURL

がオーナーズストアのアドレスです
ここを

“myowersstore/”

とかにする指示で、これで
http://localhost:8080/myowersstore/
がオーナーズストアのアドレスになるのですが、オーナーズストア>モジュールの一覧でモジュールの取得を押すと

エラー発生

2015/03/16 20:24:27 [/upgrade/index.php] * error! code:2002 / debug:O:10:"PEAR_Error":8:{s:20:"error_message_prefix";s:0:"";s:4:"mode";i:1;s:5:"level";i:1024;s:4:"code";i:111; s:7:"message";s:18:"Connection refused";s:8:"userinfo";N;s:9:"backtrace";a:6:{i:0;a:6:{s:4:"file";s:35:"/vagrant/mobax/data/module/PEAR.php";s:4:"line";i:542;s:8:"function";s:10:"PE AR_Error";s:5:"class";s:10:"PEAR_Error";s:4:"type";s:2:"->";s:4:"args";a:5:{i:0;s:18:"Connection refused";i:1;i:111;i:2;i:1;i:3;i:1024;i:4;N;}}i:1;a:7:{s:4:"file";s:41:"/vagrant/mob ax/data/module/Net/Socket.php";s:4:"line";i:185;s:8:"function";s:10:"raiseError";s:5:"class";s:4:"PEAR";s:6:"object";O:10:"Net_Socket":14:{s:2:"fp";N;s:8:"blocking";b:1;s:10:"persis tent";b:0;s:4:"addr";s:9:"127.0.0.1";s:4:"port";i:8080;s:7:"timeout";b:0;s:10:"lineLength";i:2048;s:7:"newline";s:2:"
・・・

サーバー自身からlocalhost:8080へアクセスできない様子(そらそうだ)

  • OSTORE_URL
  • OSTORE_SSLURL

“http://localhost/myowersstore/”

にしてやるとうまくいきました

PEARがおかしい?socketが使えない?などはまりました..

ECCUBEにCloud Paymentの決済モジュールをインストールする

EC CUBE v.2.13.3に
cloud payment (旧 j-payment)の決済モジュールをインストールしました

モジュールを手に入れる

v.2.12の頃はEC CUBE オーナーズストアでモジュールがダウンロードできたのですが、いまは消されてます

cloud paymentに問い合わせたところ
なぜかアドレス教えてくれず、管理画面からのリンクを教えられる
(ログイン必要)

リンク貼ってもいいのかわからないので、リンクは貼らないでおきます
Cloud Payment管理画面からのリンクで、ファイルがてにはいりました

  • index.php
  • mdl_jpayment (ver2.13系).zip
  • EC-CUBEインストール・初期設定マニュアル.pdf

マニュアルは EC CUBE v.2.12用でした

zipを解凍してみる

$ unzip mdl_jpayment.zip

index.php
mdl_jpayment ディレクトリ

が解凍されます
index.phpは最初のダウンロードしたのと同じでした
(同じもの入れないでほしい..)

インストール

サーバーにログイン、適当なディレクトリを作り、そこをオーナーズストアとして認識させる
ECCUBEの公開ディレクトリに cloudpayment をつくりました
直下を公開ディレクトリにしてるので、

$ mkdir cloudpayment
(ふつうだとhtml/cloudpaymentでしょうか)

ここに解凍してできた index.php を入れます

$ mv (ダウンロードディレクトリ)/index.php cloudpayment

管理画面で設定を変える

OSTORE_URL
OSTORE_SSLURL

“http://www.ec-cube.net/”
“https://www.ec-cube.net/”
から
“cloudpayment/”

に変更、なんですがvagrantだったので

“http://localhost/cloudpayment/”

に変更

参照 vagrant上のECCUBEでオーナーズストアを自身にするとエラーが発生する

管理画面>オーナーズストア>モジュール管理、へアクセス
モジュール一覧の取得

あとは、店舗IDなどをいれて保存

OSTORE_URLなどは元に戻しておきます

ECCUBEでプラグインアップデートでエラー

ECCUBE v.2.13.3でプラグインの更新時

Warning(E_WARNING): unlink(/vagrant/sample/data/downloads/tmp/plugin_install/DE-0002_20141208.tar.gz): No such file or directory on [/vagrant/sample/data/class/pages/admin/ownersstore/LC_Page_Admin_OwnersStore.php(938)] from 10.0.2.2


data/logs/error.log
にエラーが..

これで直りました

$ mkdir data/downloads/tmp/plugin_install

plugin_installディレクトリがなかったみたいです