2013年6月7日金曜日
[cakphp] 特定のカラムのグループごとの最大値が格納されている行
特定のカラムのグループごとの最大値が格納されている行
「物品ごとに最高値を付けている業者 (複数可) は?」
MySQLのドキュメントによると次のようになる。
これをcakephp風に書き直すと以下のようになる。
2013年4月4日木曜日
[cakphp 1.3] XMLをを出力する単純な例
- 拡張子でリソースの種類を判断できるよう、「{app}/config/routes.php」に Router::parseExtensions()を追加します。
- xml用のデフォルトレイアウトビューファイル「{app}/views/layouts/xml/default.ctp」を追加します。
- データをXML出力するためのビューファイル「{app}/views/posts/xml/index.ctp」を作成します。
- コントローラーにコンポーネントRequestHandlerを追加します。
- function beforeFilter()を追加します。 rssの時にdebug設定が0でないとContent-Typeがtext/htmlになるようなので、 debug設定を0にしてJSONのときのContent-Typeがapplication/jsonになるようにします。 (4.と5.はapp_controller.phpに設定してしまってもよいかもしれません)
- function index()にRSS出力するデータをセットします。
cake bake project すると、{app}/views/layouts に email,js,json,rss,xmlのフォルダーが 自動的に作成されるので必要はないがzipを展開しただけなら無いので作成が必要。
2013年3月21日木曜日
[cakephp 1.3] RSSを出力する単純な例
- 拡張子でリソースの種類を判断できるよう、「{app}/config/routes.php」に Router::parseExtensions()を追加します。
- RSS用のデフォルトレイアウトビューファイル「{app}/views/layouts/rss/default.ctp」を追加します。
- データをRSS出力するためのビューファイル「{app}/views/posts/rss/index.ctp」を作成します。
- コントローラーにコンポーネントRequestHandlerを追加します。
- function beforeFilter()を追加します。 rssの時にdebug設定が0でないとContent-Typeがtext/htmlになるようなので、 debug設定を0にしてJSONのときのContent-Typeがapplication/jsonになるようにします。 (4.と5.はapp_controller.phpに設定してしまってもよいかもしれません)
- function index()にRSS出力するデータをセットします。
cake bake project すると、{app}/views/layouts に email,js,json,rss,xmlのフォルダーが 自動的に作成されるので必要はないがzipを展開しただけなら無いので作成が必要。
[cakephp 1.3] JSON出力する単純な例
- 拡張子でリソースの種類を判断できるよう、「{app}/config/routes.php」に Router::parseExtensions()を追加します。
- JSON用のデフォルトレイアウトビューファイル「{app}/views/layouts/json/default.ctp」を追加します。
- データをJSON出力するためのビューファイル「{app}/views/posts/json/index.ctp」を作成します。
- コントローラーにコンポーネントRequestHandlerを追加します。
- debug設定が0でないとContent-Typeがtext/htmlになるようなので、 debug設定を0にしてJSONのときのContent-Typeがapplication/jsonになるようにします。 (4.と5.はapp_controller.phpに設定してしまってもよいかもしれません)
- JSON出力するデータをセットします。
cake bake project すると、{app}/views/layouts に email,js,json,rss,xmlのフォルダーが 自動的に作成されるので必要はないがzipを展開しただけなら無いので作成が必要。
2013年3月18日月曜日
[cakephp 1.3] index.htmlで表示できるようにする。もしくは routes.phpにRouter::parseExtensions()を追加すると。
まず、config/routes.phpにRouter::parseExtensions();を追加します。
こうすると普通のページを表示したとき、$this->params['url']['ext']に'html'が必ず付加されるようになります。
どういうことになっているかというと、
http://example.com/top/view が http://example.com/top/view.html と同じ扱いになる。
普通 http://example.com/top/view.html とすると、function view.html(){}が無いのでエラーになるが、
Router::parseExtensions();を追加するとエラーにはならず、
http://example.com/top/view.html とすると function view(){} を実行する。
こうすると普通のページを表示したとき、$this->params['url']['ext']に'html'が必ず付加されるようになります。
どういうことになっているかというと、
http://example.com/top/view が http://example.com/top/view.html と同じ扱いになる。
普通 http://example.com/top/view.html とすると、function view.html(){}が無いのでエラーになるが、
Router::parseExtensions();を追加するとエラーにはならず、
http://example.com/top/view.html とすると function view(){} を実行する。
2013年2月21日木曜日
[mpdf56] PDF出力をゴシックで
1146行からはマルチバイトの修正、10466行からは小塚明朝から小塚ゴシックへの変更
42行からはCJKをtrueにします。270行からは標準フォントをserifからsans-serifに変更。
| mpdf.php | |
|---|---|
| 1146 | if (preg_match('/([\-+])aCJK/i',$mode, $m)) { |
| 1147 | preg_replace('/([\-+])aCJK/i','',$mode); |
| 1148 | if ($m[1]=='+') { $this->useAdobeCJK = true; } |
| 10465 | $family='sjis'; |
| 10466 | $name='KozMinPro-Regular-Acro'; |
| 10467 | $cw=$this->SJIS_widths; |
| mpdf.php | |
|---|---|
| 1146 | if (preg_match('/([\-+])aCJK/i',$mode, $m)) { |
| 1147 | // bug? preg_replace returns replaced value! |
| 1148 | //preg_replace('/([\-+])aCJK/i','',$mode); |
| 1149 | $mode = preg_replace('/([\-+])aCJK/i','',$mode); |
| 1150 | if ($m[1]=='+') { $this->useAdobeCJK = true; } |
| 10467 | $family='sjis'; |
| 10468 | //$name='KozMinPro-Regular-Acro'; |
| 10469 | $name='KozGoPro-Medium'; |
| 10470 | $cw=$this->SJIS_widths; |
42行からはCJKをtrueにします。270行からは標準フォントをserifからsans-serifに変更。
| config.php | |
|---|---|
| 42 | |
| 43 | $this->useAdobeCJK = false; // Uses Adobe CJK fonts for CJK languages |
| 44 | // default TRUE; only set false if you have defined some available fonts that support CJK |
| 270 | 'BODY' => array( |
| 271 | 'FONT-FAMILY' => 'serif', |
| 272 | 'FONT-SIZE' => '11pt', |
| config.php | |
|---|---|
| 42 | |
| 43 | $this->useAdobeCJK = true; // Uses Adobe CJK fonts for CJK languages |
| 44 | // default TRUE; only set false if you have defined some available fonts that support CJK |
| 270 | 'BODY' => array( |
| 271 | 'FONT-FAMILY' => 'sans-serif', |
| 272 | 'FONT-SIZE' => '11pt', |
[mac osx] ゴミ箱が機能しなくなった。
ゴミ箱にいれると即削除されるようになってしまった。
どうやら ~/.Trash のパーミッションが変わってしまったらしい。
なぜかオーナーが root になっていた。
原因がわかってしまえば対処方は簡単
sudo chown -R 自分 ~/.Trash
2013年2月18日月曜日
[cakephp 1.3] Button or Submit
<input type="button">を作りたかったんだけど
$this->Form->input('button',array('type'=>'button');としても
<button></button>しかできないし、困っていたんだけど、色々やってみたら
解決したので書いておく。
このように書くと
このように書くと
echo $this->Form->submit('送信',array('type'=>'button','div'=>false,'label'=>false));
echo $this->Form->submit('送信',array('type'=>'submit','div'=>false,'label'=>false));
echo $this->Form->button('送信',array('type'=>'button','div'=>false,'label'=>false));
echo $this->Form->button('送信',array('type'=>'submit','div'=>false,'label'=>false));
このように出力されます。
<input type="button" value="送信" /> <input type="submit" value="送信" /> <button type="button">送信</button> <button type="submit">送信</button>
[cakephp 1.3] 本当に削除してもいいですか?
echo $this->Form->button('削除', array(
'type' => 'button',
'onClick' => "if(confirm('削除しますか?')){location.href='". $this->Html->url(array('controller' => 'estates','action'=>'delete',$result['Estate']['id'],))."';}"
));
2013年2月8日金曜日
[mysql] update 結合したテーブルの値のコピー
UPDATE `bukken_commons` ,`bukken_sells` SET `bukken_commons`.`commercial_medium` = `bukken_sells`.`baitai` WHERE `bukken_commons`.`bukken_id` = `bukken_sells`.`bukken_id`
2012年12月19日水曜日
[cakephp 1.3] コンポーネントをViewから使う
こういうコンポーネントをViewからコールする
コントローラで
$this->Utils->共通コンポーネントの関数()
と呼び出すことで、コンポーネントの関数を呼び出すことができる。
class UtilsComponent extends Object {
function pdate($id) {
$Picture = ClassRegistry::init('Picture');
$tmp = $Picture->read('modified',$id);
return $tmp['Picture']['modified'];
}
}
同じ名前のヘルパーを作成する。このヘルパーを通してコンポーネントをコールする。
App::import('Component','Utils');
class UtilsHelper extends AppHelper {
function __call($methodName, $args) {
$utils = new UtilsComponent();
return call_user_func_array(array($utils, $methodName), $args);
}
//もちろんこのヘルパー内に他の関数を書いてもよい。
}
上記により、UtilsHelperに存在しない関数はUtilsComponentの呼び出しに変換されるコントローラで
var $components = array('Utils'... その他のコンポーネント);
var $helpers = array('Utils', ...その他のヘルパー);
と定義しておけば、ビューからは$this->Utils->共通コンポーネントの関数()
と呼び出すことで、コンポーネントの関数を呼び出すことができる。