edo1z blog

プログラミングなどに関するブログです

cakePHP

cakePHPのプロジェクトを簡単に作成するようにする

cakePHPをやってる人なら少なからずやってると思いますが、僕はやってません。 今考えて仕組みをつくりたいと思います。 今つくっているBakeを使いたいので、BakeのプロジェクトをGithubのリポジトリに入れておいて、それをクローンしてデータベースをつくっ…

Bake お気に入り登録機能

お気に入りの登録機能を実装するときにどうしようかなと思っております。 単純に考えると、お気に入りを登録する対象を設定しておき、その対象設定に基づき、モデルを作成します。もしテーブルがなければモデル作成の前にテーブル作成してもいいです。 例え…

cakePHP2.3 shellで色変える

参考: http://book.cakephp.org/2.0/ja/console-and-shells.html#styling-output $this->stdout->styles('green', array('text' => 'green', 'blink' => false, 'bold' => true, 'underline' => true)); $this->out(__d('cakeconsole', "<green>Greeeen!!!!</green>\n"));

Bake改造 あたまの整理

Bakeを改造しているわけですが、結局何がしたいのか不明瞭なままつくっているとたこ足配線みたいになってきますので、目的をしぼってリファクタリングしていきます。最終的にはWEB上で設定した内容に基づいてぽこっとサイトを生むようなものを想定しておりま…

cakePHP2.3 Bakeの改造

coreのbakeをコピーしてプラグイン化することによりオリジナルbakeを作成します。 bakeに、下記機能を追加していきます。 ・twitter bootstrapを使ったviewに変更する ・多言語化機能を使った効率的な日本語化を可能にする ・管理画面のメニューもDBに応じて…

capistranoでデプロイ時にURLを置換する

下記を追加してとりあえずデプロイ時にURL置換するようにしました。 run "find #{latest_release}/app/View/. -type f |xargs sed -i -e s/\\/hoge\\//\\/hoge2\\/current\\//g"

cakePHP プラグイン内でモデルを使う

プラグインを追加して、プラグインのコントローラーから、プラグインではないモデルにアクセスする方法がよく分からない。 というか、User認証に関するロジックをプラグイン化しつつ、モデルは既存のUserモデルを使おうとするときに、プラグインのユーザ登録…

cakePHP2.3 多言語化

app/Consoleに移動して、下記を起動する ./cake i18n E押したら翻訳ファイルみたいのを作ってくれる。詳細は、ここ。わかりやすい。 /app/Locale/jpn/LC_MESSAGES/default.poに出力したファイルをコピーする。僕の場合は、/app/Locale内にdefault.potという…

YouTube API

cakePHPのviewでYouTubeAPIを初めて使った。divのid="videoDiv"内に動画が自動で再生される。閲覧中断していた動画は中断したところから再生される。閲覧中断ボタンと、閲覧完了ボタンに対応している。といったようなことをした。 start('script')?> <script src="//www.google.com/jsapi" type="text/javascript"></script> <script> var y…

cakePHP FileBinderで画像リサイズ

モデルでこうやってやると、画像登録前にresize_image関数を呼出す。resize_image関数には、引数として画像ファイルが渡される。 public $actsAs = array('Filebinder.Bindable' => array( 'beforeAttach'=>'resize_image', ));

cakePHP2.3 Jsonレスポンス

shops/hoge.jsonをpostで呼出して、結果をjsonで貰おうとするようなことは結構やってるんだけど、忘れてたのでメモ。 (1)ルーターphpに、Router::parseExtensions('json');を追記する。これによって、json拡張子に対応するようになる。 (2)shopsコント…

FileBinderのエラー

FileBinderのエラーが出たからメモ FileBinderでcakePHPのWEB_ROOT下に保存しようとしたらエラーになった。 ディレクトリの所有者をnobodyにしたらエラーがでなくなった。

cakePHP2.3 TwitterKit Plugin

https://github.com/elstc/twitter_kit/tree/2.0 database.phpにコンシューマキーなどの設定を書く public $twitter = array( 'datasource' => 'TwitterKit.TwitterSource', 'oauth_consumer_key' => 'CAIFwaaaaaaaaaa80qZBMQ', 'oauth_consumer_secret' => …

cakePHP2.3 Schema

参考:CakePHP2.0のコンソールを使ってラクラク自動生成しよう【1/2】 データベースの状態をschemaに保存したり、schemaの内容をもとにテーブルをつくったりできる。 コンソールでapp/Console/cake schemaとやって使う。 schema generate 現在のデータベース…

cakePHP Routing

http://book.cakephp.org/2.0/en/development/routing.html 下記のような感じでルーティングができる。:hogeとやると、名前がつけられる。第一引数にURLのパターン、第二引数にアクション先を指定する。第二引数は、controller、action以外に、パラメタも指…

cakePHP Android��セッションが使えない

Androidでセッションがつかえないよー。しくしく。 Cookieはつかえるよー。 http://cakephp.jp/modules/newbb/viewtopic.php?topic_id=2370&forum=3に書いてある、 Configure::write('Security.level', 'low');をcore.phpに追加してみたけど解決できない。ca…

cakePHP view 現在のURLを取得する

Html->url(null, true)?> これで、http://localhost/blogs/addみたいなのが取得できて、 Html->url(null)?> これで、/blogs/addみたいなのが取得できる

cakePHP こわいRecursive

http://book.cakephp.org/2.0/ja/models/model-attributes.html recursiveは恐ろしい。怖い人はAppModelに、public $recursive = -1;と書いておけばデフォルトで-1になるようだ。 これをしない場合、デフォルト値は1になる。 recursive -1 は、JOINしない。…

cakePHP Paginator ページ番号が大きすぎる場合のエラーの回避

検索ページでPaginatorを使っていると、3ページ目を表示している状態で、検索条件を変更した結果、3ページ目が存在しなくなり、Not Fountエラーが生じるといったことがありました。これはあんまりよろしくないので、Paginatorを確認しました。 queryではなく…

cakePHP Transitionプラグインのautomate関数の使い方

Transitionプラグインは便利ですね。ソースコードがかなりすっきりします。 セッションをつかって、ページ遷移と、ページ毎に入力された内容を記録してきれるので、ページ遷移チェックと、入力内容の取り扱いが楽になります。 さて、$this->Transition->auto…

cakePHP アソシエーションの一括save

アソシエーション: モデル同士を繋ぐ参考 PostモデルとTagモデルがhasAndBelongsToManyの関係にあるとき、Postを登録する際に、$this->request->dataが、下記にようになっていれば一括登録できるようだ。 $this->request->data = array( 'Post' => array( 't…

cakePHP HABTMのテーブルをJOINして検索する

postsとtagsはHABTMであるときに、tag_idの1か2をもつpostのみを抽出する場合、postsにposts_tagsをjoinして、更にtagsをjoinした上で、tag_idを条件に設定してfindする。 public function search(){ $this->Post->recursive = 0; $options = array( 'joins'…

Subversion cakePHPプロジェクトの作業コピーつくったら最初にやることのメモ

cakePHPのプロジェクトのリポジトリをつくって、作業コピーをつくったらignore設定とか色々あるので、メモする。いつもignoreを微妙に忘れるし。 subversionのチェックアウト svn checkout svn+ssh://user@host . 作業コピーが終わってからの作業のshをつく…

cakePHP2.3 Filebinderのパスをベタうちしない

アイテムを登録するときにアイテムの画像も一緒に登録したいときはFilebinderの出番なのですが、Filebinderはモデルにパスを登録するのですが、ベタうちしたくない場合(ベースとなるパスをコントローラーからもモデルからも参照できる1カ所に書きたい場合…

cakePHPの開発環境自動化のことが沢山かいてあるブログ

http://www.ryuzee.com/contents/blog/category/php

cakePHP2.3 $this->Model->createについて

微妙な投稿ですが、覚え書き。 Jobモデルというのがあったとします。 $this->Job->create()をした直後に、 $this->Job->field('id')とやったら、30と出てきてびっくりしました。 idは設定されてないから空っぽじゃないのか??と思ったのであります。 どうや…

cakePHP 2.3 Shell経由でのWebroot

絶対パスにしないと使えません。 Html->image(IMAGES . 'hoge.png'); ?>

cakePHP 2.3 Debug kitのエラー

エラーがでてこまった。原因はこれだった。 Parse error: syntax error, unexpected T_FUNCTION in ~app/Plugin/DebugKit/Controller/Component/ToolbarComponent.php on line 174 と怒られた場合は、PHPのバージョンを確認してみて下さい。PHP 5.3.0以降で…

cakePHP 2.3 アップロード ダウンロード

FileBinderは便利だった。これはアップロードを簡単にできるようにするプラグインで、アップロードしたファイルを閲覧したりダウンロードしたりするのも超簡単にヘルパーを使って出来るようになっている。大変有り難い機能である。ノーベル平和賞を個人的に…

cakePHP2.3 フォルダの作成など

フォルダとかファイルとかをいじりたいときは、 App::uses('Folder', 'Utility'); App::uses('File', 'Utility'); を設定する。 以下の関数内でフォルダをあるかないか確認したり、消したり、作ったりした。 でも、$dir->create('フォルダ名');とやると、web…