このサイトは株式会社オープンソース・ワークショップの旧サイトです。
新サイトを参照していただけますようお願いいたします。
https://opensource-workshop.jp/
NetCommons開発TIPS
NC1.xから2.4.0.xへの移行
--- 環境
--- NCMigration1.0.3を使う
--- 準備NC1
--- 準備NC2
--- 準備NCMigration
--- サイト構成
--- データ移行
--- エラー1
--- 対応1
--- エラー2
INSERT INTO netcommons2_pages_users_link(`room_id`,`user_id`,`role_authority_id`,`createroom_flag`,`insert_time`,`insert_site_id`,`insert_user_id`,`insert_user_name`,`update_time`,`update_site_id`,`update_user_id`,`update_user_name`) VALUES(?,?,?,?,?,?,?,?,?,?,?,?);:Array ( [room_id] => 9615 [user_id] => 6d2ec6f4f918347aef5cfb189bfedcd8d85ff44d [role_authority_id] => 4 [createroom_flag] => 0 [insert_time] => 20150327233503 [insert_site_id] => 0621068e454f23fc44c714e8eaef6f27f41b2662 [insert_user_id] => 6f08a38bcb67340f22bb7122d5e4ebdbe8c4c58d [insert_user_name] => XX5200 [update_time] => 20150327233503 [update_site_id] => 0621068e454f23fc44c714e8eaef6f27f41b2662 [update_user_id] => 6f08a38bcb67340f22bb7122d5e4ebdbe8c4c58d [update_user_name] => HA5217 ) :Duplicate entry '9615-6d2ec6f4f918347aef5cfb189bfedcd8d85ff44d' for key 1:C:\projects\xampp_lite\htdocs\NCMigration\model\utility.php:393
--- 対応2
--- エラー3
--- 対応3
/**
* NC1データベースコネクションオブジェクト設定
*
* @param string $dsn データソース名称(dbType://user:password@host/dbName?new)
* @return void
* @access public
*/
function setNC1ADOConnection($dsn)
{
$dsn = $this->addDSNNew($dsn);
$this->nc1ADOConnection = NewADOConnection($dsn);
if (!empty($this->nc1ADOConnection)) {
// 追記箇所
$adoConnection = $this->nc1ADOConnection;
if (strpos($adoConnection->dataProvider, "mysql") === 0) {
$serverInfo = $adoConnection->ServerInfo();
if (floatval($serverInfo["version"]) >= 4.01) {
$adoConnection->Execute("SET NAMES 'ujis';");
}
}
$this->nc1ADOConnection->SetFetchMode(ADODB_FETCH_ASSOC);
}
}
NetCommons2のファイルアップロード時にでてくるダイアログについて
こんにちは。牟田口です。
ファイルアップロード時に、アップロード処理の時間が長いと
「アップロードが失敗したか、タイムアウトになった可能性があります。処理を続行しますか?」
とダイアログが出る事がありますが、
カスタマイズ時に非表示にできないか調べました。
https://github.com/netcommons/NetCommons2/blob/537e08b7a2892bacd2eed5dbac3ea45792de0f36/html/webapp/modules/common/files/js/common.js#L2451
/*timeout_flag:0の場合、タイムアウトチェックをしない */
/*********************************************************/
sendAttachment: function(params_obj) {
上記パラメータをセットすれば、できる。
サンプルJS
/**
* ファイルアップロード
*/
uploadFile: function() {
var messageBody = new Object();
messageBody["action"] = "custummodule_action_main_import";
var option = new Object();
option["param"] = messageBody;
option["top_el"] = $(this.id);
option["timeout_flag"] = 0; // タイムアウトチェックをしない
option["callbackfunc"] = function(response) {
commonCls.alert("インポートしました。");
commonCls.sendRefresh(this.id);
}.bind(this);
option["callbackfunc_error"] = function(file_list, res){
commonCls.alert(res);
}.bind(this);
commonCls.sendAttachment(option);
},
ではでは。
NetCommons3の$this->NetCommonsForm->hidden
こんにちは。牟田口です。
自分用でせっかく調べたので、開発メモを残します。
2016/1/4時点のNetCommons3情報です。
- NetCommonsFormHelper.phpにはhiddenメソッドがないけど、実際のソース上では使っている。
- NetCommonsFormHelper.php内で、さらにhelperを指定していて、「Form」helperを呼んでいた。
- そこと、__callで「FormHelperラップ用マジックメソッド」してた。
- それで、FormHelper.phpのhiddenメソッドが使われていた。
--- 詳細
NetCommonsFormHelper.php
- https://github.com/NetCommons3/NetCommons/blob/5eb054cf27991703519ae97a6ae7643e09a8a72b/View/Helper/NetCommonsFormHelper.php#L27
- https://github.com/NetCommons3/NetCommons/blob/5eb054cf27991703519ae97a6ae7643e09a8a72b/View/Helper/NetCommonsFormHelper.php#L429-L438 __callで「FormHelperラップ用マジックメソッド」
実際のソース上では使っている箇所
<?php echo $this->NetCommonsForm->hidden('Block.id'); ?>
<?php echo $this->NetCommonsForm->hidden('VideoBlockSetting.id'); ?>
<?php echo $this->NetCommonsForm->hidden('VideoBlockSetting.block_key'); ?>
FormHelper.phpのhiddenメソッド
--- おまけ
http://book.cakephp.org/2.0/ja/core-libraries/helpers/form.html#FormHelper::hidden
フォームが編集されると(すなわち、配列 $this->request->data に User モデルに渡されるべき情報が含まれている場合)、生成される HTML の中に id フィールドに対応する値が自動的に追加されます。
上記が便利。
以上です。
NC3開発、cakephp2.x FormHelperメモ
こんにちは。牟田口です。
NetCommos3プラグイン開発しています。
cakephp2.xメモです。
- cakephpの`FormHelper`で`$options['type'] =‘put`は編集フォーム。
- $this->request->dataに、モデルのプライマリキー の値が空でなければ、編集フォームになる。
- 編集フォームの`<input type="hidden" name="_method" value="PUT" />`は、cookbookでは《HTTPメソッド》と表現していた。
- RFC 7231のHTTPメソッドでも、《置換するもの》として定義されていた。
なるほど、納得した。
情報元
▼ フォームの作成 - FormHelper - CakePHP Cookbook 2.x ドキュメント
http://book.cakephp.org/2.0/ja/core-libraries/helpers/form.html#id1
《 <form id="RecipeEditForm" method="post" action="/recipes/edit/5">
<input type="hidden" name="_method" value="PUT" />
注釈
これは編集フォームなので hidden の入力項目が生成され、 デフォルトの HTTP メソッドは上書きされます。》
▼ create() のオプション - FormHelper - CakePHP Cookbook 2.x ドキュメント
http://book.cakephp.org/2.0/ja/core-libraries/helpers/form.html#create
《$options['type'] このキーは生成するフォームのタイプを指定します。 有効な値は ‘post’, ‘get’, ‘file’, ‘put’, ‘delete’ です。》
▼ 4.3.4. PUT - RFC 7231 - HTTP/1.1: Semantics and Content (日本語訳)
http://www.hcn.zaq.ne.jp/___/WEB/RFC7231-ja.html#section-4.3.4
《PUT 要請は:
[ 同封された表現が、ターゲットリソースの状態を置換する ]ものとして定義される。 》
NC3開発、cakephp2.xメモ。$this->request->isPost()は非推奨
こんにちは。牟田口です。
NetCommons3プラグイン開発しています。
cakephp2.xメモです。
$this->request->isPost(); // 非推奨 だった。
$this->request->is('post'); //こっちが正解
情報元
▼ リクエストを調べる - リクエストとレスポンスオブジェクト - CakePHP Cookbook 2.x ドキュメント
http://book.cakephp.org/2.0/ja/controllers/request-response.html#check-the-request
《$this->request->is('post');
$this->request->isPost(); // 非推奨》