30
4月

ubuntuにeclipse+PDTでCakePHPデバッグ環境

ubuntuにeclipse on PDTでCakePHPプロジェクトをデバッグする環境を構築します。

  • ubuntu 8系
  • xampp for Linux 1.7.1
  • eclipse 3.4
  • CakePHP 1.2

eclipseはホームディレクトリに、xamppは/optにダウンロード&展開しました。パッケージ管理(apt及びそのフロントエンドのSynaptic)でもインストールできますが、eclipseはパッケージ管理で入れるとプラグイン追加時にエラーでまくりでいちいち対処するのが面倒でした。

まずはxampp for Linuxから。
続きを読む…


タグ

, , ,

関連する投稿

30
3月

CakePHPのfolder.phpでディレクトリ操作

PHPでディレクトリを作成する場合、一行若しくは存在しないファイルを作成すればコードを書かなくても実現できますが、ディレクトリ削除はディレクトリ内にファイルが存在する場合、以下のようにファイルを一旦すべて削除してからディレクトリを削除する流れになります。

function remove_directory($dir) {
  if ($handle = opendir("$dir")) {
   while (false !== ($item = readdir($handle))) {
     if ($item != "." && $item != "..") {
       if (is_dir("$dir/$item")) {
         remove_directory("$dir/$item");
       } else {
         unlink("$dir/$item");
         echo "removing $dir/$item";
       }
     }
   }
   closedir($handle);
   rmdir($dir);
   echo "removing $dir";
  }
}

remove_directory("/path/to/dir");

余談ですが、たまに「system(“rm -Rf /path/to/dir“);でいいじゃん」なんて言う人がいますが、こんな環境ド依存コードでいいじゃんと言える神経がちょっとわかりません。
続きを読む…


タグ

, ,

関連する投稿

25
3月

mod_rewriteでRewriteCond %{REQUEST_FILENAME}

CakePHPやWordpressでお馴染のmod_rewrite。ルールの前にRewriteCondを書くことが多いでしょう。CakePHPやWordpressでファイルやディレクトリが実在する場合はルールを適用しないとする以下のような2行が書かれています。CakePHPやWordpressのファイル以外のファイルと共存させる場合などはこの2行が重要になってきます。

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

しかし、このRewriteCond %{REQUEST_FILENAME}が効かない、実際にファイルやディレクトリが実在するのにルールが適用されてしまう、CakePHPやWordpressで.htaccessをいじっているとそんな感じでハマることがあります。
続きを読む…


タグ

, , ,

関連する投稿

23
3月

CakePHP1.1でFCKEditorヘルパー作成

CakePHPにFCKEditorを設置するためにググってたらFCKeditor – 設置編を見つけました。ん~ずいぶん古い記事ですね。Javascript書けば良いだけなんで手軽ですが使いたい場所でホイっと使えるようにヘルパーにしたい。ということで再度探すとCakePHP1.2RC3でFCK Editorを使うを見つけました。おお~…でも今回使っているのは諸事情によりCakePHP1.1なんです。

cakePHPでFCKeditorを使う(cakePHP1.1x系)も見つけたんですが、こりゃただJavascriptを吐いてるだけですね。この後ファイルアップロード云々するためにはPHPでやっておきたいのでCakePHP1.2RC3でFCK Editorを使うをCakePHP1.1用に書き直すことにしました。…と言ってもほとんど変わりません。強いて言えばデフォルト値を読み込めるようにしたことでしょうか。
続きを読む…


タグ

,

関連する投稿

15
3月

CakePHPでモデル名変更への対処

CakePHPで行き当たりばったりに開発しているとモデル名を変更したくなる時があります。しかしCakePHPのチュートリアルのように書いているとモデル名を変えた時ソースへの影響が大きすぎます。そこで誰でも考え付きそうな方法なんですが対処方法を書いておきます。

まずコントローラでの影響範囲を減らすためにモデルのオブジェクトをローカル変数に格納します。

$M = $this->Model;

で、普通に使います。モデル名が変わったら上の1行を書き直すだけです。

$M->findAll();

続きを読む…


タグ

,

関連する投稿

14
3月

CakePHPでDBデータからセレクトボックス作成

DBから取得したデータをセレクトボックスのオプションにする場合、CakePHP1.1ではgenerateListを使用して以下のように書きます。

$this->Model->generateList($conditions, $order, $limit, $keyPath, $valuePath);

引数の意味は

  • $conditions…検索条件
  • $order…ソート順
  • $limit…取得上限数
  • $keyPath…オプションのキーに設定するカラム
  • $valuePath…オプションの値に設定するカラム

続きを読む…


タグ

, ,

関連する投稿

13
3月

CakePHPで3つ以上の複数テーブルを結合

CakePHPで3つ以上の複数テーブルを結合します。SQLならば基本的な結合で難なくこなせますが、CakePHPのアソシエーションはhasOne, hasMany, belongsTo, hasAndBelongsToManyだけなので一見無理そうに見えます。アソシエーションについて詳しくは関連-モデルを結びつけるを参照してください。

このhasOne, hasMany, belongsTo, hasAndBelongsToManyを覚えれば、業務において頻繁に発生する「bテーブルのc_idをキーとしてcテーブルのnameを取得する」という結合要件は難なくクリアできます。しかし「aテーブルのb_idをキーとしてcテーブルのnameを取得する」にはどうしたら良いのでしょうか?
続きを読む…


タグ

, ,

関連する投稿

17
2月

CakePHPでレンダリング結果をファイル出力

CakePHPでレンダリング結果のHTMLをファイルとして書き出す方法です。もちろんテンプレートを利用できますのでHTMLだけじゃなくテキストデータならどんなファイルでも同じ方法で書き出せます。今回はCakePHP1.2のFileクラスを利用する方法です。まずは普通にviewを用意。

app/views/tests/test.ctp

<html> 
<head> 
<meta http-equiv="Content-type" content="text/html; charset=utf-8"> 
<title>test</title> 
</head> 
<body>
<?php echo $test ?>
</body> 
</html>

続きを読む…


タグ

, ,

関連する投稿

08
2月

CakePHPでAmazon Web Service

CakephpでAmazon Web Serviceを利用するためにモデルをうまく使います。今回はPEARのServices_Amazonは使いません。賛否両論あるかもしれませんが、依存しまくりのライブラリを安易に使うと運用上ダルくなるので僕はなるべく使いません。ネット上にはPEARを使う方法のほうが多いし。

では、まずはデータベースを使用しないようにモデルを書きます。

/app/models/test.php

class Test extends AppModel
{
    var $name = 'Test';
    var $useTable = false;
}

続きを読む…


タグ

, , , ,

関連する投稿

02
2月

PHPでリダイレクトしたら画面が真っ白

なんじゃこりゃ。こんなことで何十分ハマってんだよ。というのがあったので書いておきます。

CakePHPでリダイレクト先が真っ白…ログを見てもエラーが吐かれていない。んんん?随分PHP触ってるけどこんなん初めてだぞ?エラーも出ない。ステップ実行してもリダイレクトするけどやっぱりブラウザに空白画面が表示されるだけ。おいおい、なんじゃこりゃ。CakePHPのバグか?

検索してもキーワードがまずいのか良い情報が出ず。しょうがないのでredirectメソッドのソース見るとPHPのheaderで飛ばしてるだけ。そりゃそうだよね…なんで?まあ、落ち着け。原点に返って久々にPHPのマニュアルでも見ようじゃないか。そんで見たのがPHP: header – Manual
続きを読む…


タグ

, , , ,

関連する投稿

?>-->