2012年5月8日火曜日

CakePHPで使えないテーブル名

CakePHPでベイク中にエラーが表示された。 内容は次の様なもの。 PHP Parse error: syntax error, unexpected T_LIST, expecting T_STRING in /(中略)/cakephp/app/models/list.php on line 2 Parse error: syntax error, unexpected T_LIST, expecting T_STRING in /(中略)/cakephp/app/models/list.php on line 2 このときベイクしようとしていたのはlistsというテーブルなのだけども、どうやらこのlistsというテーブル名が問題だったらしい。 既に予約されているのかな? というわけで、問題を引き起こす避けるべきテーブル名を発見次第列挙。 ■予約語? lists ■複数形が特殊なために面倒なテーブル名 aquarium

2012年5月7日月曜日

CS-Cartのオリジナルスキンを追加するディレクトリ

CS-Cartのスキンは、skinsというディレクトリにあるものが表示される。
しかし、このskinsにスキンデータをアップロードしても、管理画面のスキン変更リストには表示されない。

管理画面のスキン変更リストに、オリジナルのスキンを表示させるためには、skinsではなく、/var/skins_repository にスキンデータをアップロードする必要がある。

1./var/skins_repositoryにスキンデータをアップロードする
2.管理画面の[デザイン]-[スキンセレクター]を選択
3.スキンセレクター画面でオリジナルのスキンデータを選択
4.[保存]ボタンを押す

という手順で、/var/skins_repositoryのデータが/skinsにコピーされる。

2012年5月2日水曜日

SSHが使えないサーバでシンボリックリンクを作る

廉価なレンタルサーバの場合、SSHが使えないサービスプランだったりする。
このような場合、PHPを使って、シンボリックリンクを作る。

link.php

<?php
symlink('実体へのフルパス','シンボリックリンクを設置する場所へのフルパス');

?>


フルパスで書く必要があるので、不明な場合は

<?php echo __FILE__; ?>

とでもしてフルパスを確認しておく。

SSHは使えないけども、高機能&低価格のサーバ。
予備環境として重宝してる↓

2012年4月12日木曜日

CakePHP 携帯ライブラリの設置

CakePHP1.3での携帯ライブラリの設置。覚え書き。

https://github.com/MASA-P/KtaiLibrary
https://github.com/MASA-P/ktai-dev


1.ecwディレクトリをまるごとvendorsディレクトリにコピー
※サイト全体にやるならappやcakeと同じディレクトリのvendorsでok。

2.app_controller.phpに追記
var $components = array('Ktai',・・・・);


//----------------------------------------------------------
//Redirect override.
//If iMODE access or use_redirect_session_id is true,
// adding session id to url param.
//----------------------------------------------------------
function __redirect_url($url){

 if(isset($this->Ktai)){
  if($this->Ktai->_options['enable_ktai_session'] &&
   ($this->Ktai->_options['use_redirect_session_id'] || $this->Ktai->is_imode())){
   if(!is_array($url)){
    if(preg_match('|^http[s]?://|', $url)){
     return $url;
    }
   $url = Router::parse($url);
   }
   if(!isset($url['?'])){
    $url['?'] = array();
   }
   $url['?'][session_name()] = session_id();
  }
 }
 return $url;
}

function redirect($url, $status = null, $exit = true){
 return parent::redirect($this->__redirect_url($url), $status, $exit);
}

 //「Ktai Library」の設定
 //
var $ktai = array(
 'enable_ktai_session' => true,
 'use_redirect_session_id' => false,
 'imode_session_name' => 'csid',
 'use_img_emoji' => true,
 'input_encoding' => 'UTF-8',//KTAI_ENCODING_UTF8
 'output_encoding' => 'UTF-8',//'SJIS-WIN',// KTAI_ENCODING_SJISWIN
 'output_auto_encoding' => true,
 'use_binary_emoji' => false,
 'output_auto_convert_emoji' => false,
);

3.コンポーネントにktai.phpをつっこむ
/app/controllers/components に ktai.php をコピーする


4.ついでにケータイでのアクセス時のデフォルトレイアウトを変更しておく

function beforeFilter(){
 if(!($this->Ktai->is_ktai()) ) {
  $this->layout = 'default';
 } else {
  $this->layout = 'default_mob';
 }
}

2012年3月27日火曜日

CakePHP いつもはうまくいくのにエラーになるとき見直す項目

CakePHPでサイト構築中、いつもは何も起こらない場所でエラーが発生する場合がある。
大概は、しょーもないミスが原因。でも、しょーもなさすぎると逆にどこでミスしているかわからない。

そんなしょーもないミスをおかすたびに、このコンテンツが増えますよ。

■Missing Database Table
コントローラもビューもDBにテーブルも作った。でも表示されない・・・という症状。

・テーブル名が複数形になっていない
drink → drinks

・複数形が特殊(英語的に)で接続できない

2012年3月7日水曜日

Windows:キーボードをASCIIに交換したい

ASCII(英語)キーボードを接続したのに、JIS(日本語)キーボードの配列のままだ。これなんとか直したい、という場合の解決方法。

Windowsってのはインストール時にJISキーボードを指定しちゃうと、後でASCIIに変更しようとするとレジストリをいじらなくちゃならない。これ、正直面倒くさい。自分のPCじゃないと作業後に元に戻さなくちゃいけないし。

そこでオススメなのが「キーボード切り替えツール Ver1.1」。
Vista、Windows7にも対応。

キーボード切り替えツール Ver1.1
http://www.posttips.net/aoyama/keyboard/index.html

フリーウェアですが、ウェブページで寄付もできますよ。

alt+スペースで日本語/英語入力を切り替えたい

Altキー+スペースキーで入力言語を切り替えたい、という人は多いと思う。
特に

 MacとWindowsを両方使っている
 ASCII(英語)配列キーボードを使っている
 キーボード操作はMac寄り

という方は、文字切替でイライラしていると思う。Alt+~とか面倒すぎる。~が遠いんじゃボケ。などと毒づいていることかと思います。

そこでオススメなのがCmdSpaceというソフト。
Office系ソフトなどで不具合の報告があったりもしますが、Windows7でも使えて快適。
AltだけでなくCtrl+スペースにもできるそうな。

元々、この方が困っていたのを、かつて同僚に相談したところ作ってくれたのだとか。
同僚の方、ステキ。

試してないけど、これ、ASCIIじゃなくてもJISでも相当便利なんじゃないですかね? 半角/英数、遠いんじゃボケ!とかいう人にもオススメじゃねえかなぁ?

「URL rewriting is not properly configured on your server.」というエラー。mod_rewriteが原因でない場合

cakephp1.3

インストール後にdefault.ctpをアップしたらこのようなエラー表示がなされた。

URL rewriting is not properly configured on your server.

一般的にこのエラーはmod_rewriteの設定ミスであることが多い。

 エラーからはこちらに案内される
 http://book.cakephp.org/1.3/view/917/Apache-and-mod_rewrite-and-htaccess

が、しかし、今回はdefault.ctpを入れる前には問題がなかったので、mod_rewrite自体のエラーではない。

結論から言うと、このエラーは「cake.generic.css」が読めていない事が問題。
default.ctpテンプレートでcake.generic.cssを読むように変更したところエラーが表示されなくなった。

実際には、デフォルトのページのままの運用とかはしないと思うので実害はないだろうけども、目を皿のようにして.htaccessをチェックしたあげく、どこも間違っていない・・・と泥沼にハマる前に。

2012年1月25日水曜日

CakePHP 1.3 テキストボックスの横幅を指定する

CakePHP 1.3 フォームヘルパーを使ってテキストボックスを表示するときの、横幅の指定方法。

 $Form->input(string, array('style'=>'width:100px;'));

'size'=>'8'のように指定できるかと思ったのですがダメでした。
とりあえずCSSで制御できますが、もっと良い方法があれば、追記します。


郵便番号入力フォームの例(フォーム幅を120px、入力文字数を8文字に制限)

 $Form->input('zipcode', array('style'=>'width:120px;','maxlength'=>'8'));

2011年10月7日金曜日

IE6、7でリストにfloatを使うとリストマークが表示されない

IE6、7でリストにfloatを設定するとナカグロ(・)が表示されなくなる。
list-styleで設定した行頭文字が表示されなくなるのはIE6、7の仕様らしい。
根本的な解決法はたぶんないと思われるが、それでは納得しないクライアントのために、CSSハックでIE6、7だけは画像で表示する、という方法はどうだろう?

サンプルソース(CSS)
#hoge li {
*background:url('/img/disc.gif') no-repeat 0 5px;
*padding-left:15px;
}

サンプルソース(HTML)
<div id="hoge">
<ul>
<li>hogehoge</li>
<li>fugofugo</li>
</ul>
</div>