symfony

Symfonyで環境の違いを考慮した設定方法

symfonyのインストールディレクトリが違う 三項演算子なりswich文なりで、パスを動的に書き換える。 ヒットする可能性が高い順に調べることで、比較回数を減らすよう考慮すべし。 web/index.php

hoge.cssをhoge.css?20100110にするタスク作った

なぜクエリー文字列を付加するのか せっかくCSSやJSを変更しても、ブラウザのキャッシュが残っていて変更が反映されない場合があります。そんなときによく使われるテクニックが、ファイル名の後ろにクエリー文字として更新時間を追加するというものです。こ…

imagesファルダ下にあるfavicon.icoを参照させる方法

apacheのエラーログ見たら、File does not exist favicon.icoの嵐で参ったよ。 早速favicon.icoを作成して設置しました。 faviconを設置 通常は、 <link rel="shortcut icon" href="/favicon.ico" /> こんな記述なんですけれど、今回はimagesフォルダ下のfavicon.icoを参照させたかったので 'shortcut icon',</link>…

cronでデータをダンプして樹海行きを回避する方法

誤って、DROP DATABASEしちゃった!クエリーログも無い! ______ |←樹海| . ̄.|| ̄ オワタ┗(^o^ )┓三 || ┏┗ 三  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄とならないために、cronで定期的にデータをダンプする方法です。 crontabに処理を登録 $ crontab -eコマンドでc…

symfonyで動的にDBを切り替える方法

あるデータは、現在使っているのとは別のデータベースに入れたいなぁ。 という時に便利なハックです。 DBの設定追加 databases.ymlにdatabase1用の設定(doctrine)が既にあるとして、新たにdatabase2用の設定を追加します。 all: doctrine: class: sfDoctrine…

symfonyでユーザ認証にLDAPを利用して失敗したら自分とこのDB見に行く

's0.foo.net', 'username' => 'CN=user1,DC=foo,DC=net', 'password' => 'pass1', 'bindRequiresDn' => true, 'accountDomainName' => 'foo.net', 'baseDn' => 'OU=Sales,DC=foo,DC=net' …

symfonyでユーザ認証にLDAPを利用する

前提条件 普段のユーザ認証には、sfDoctrineGuardPluginを利用している LDAPまわりは、Zend FrameworkのZend_Ldap利用する Zend Frameworkを用意する http://framework.zend.com/ 今回は、最新版(1.9.5)を使いました。 symfonyへZend Frameworkの場所を明…

symfonyでCSS,JSを絶対パスで読み込ませる

view.ymlでstylesheetsを指定すると相対パスで読み込まれます。普段はこれで問題ないのですが、絶対パスで読み込ませたい場面に遭遇したのでメモしときます。 解決方法 view.ymlに記述するファイル名を絶対パスで記述する。 まんまですね。 パス取得 symfony…

アクセスできるかを含めてURLを判定するFormの作り方

久しぶりにsymfonyネタを1つ。 バリデーション通ったURLでもアクセスしたら、404返ってきたよムキー!ってなったので 要求仕様 sfValidatorUrl通る 実際にアクセスできる 以上の要求を満たすバリデーションを作成しました。 なお、アクセス検証のためにsfWe…

There is no open connection解決方法

symfonyでテストしようとしたら、コネクション開けないと怒られました。 基本に戻り、Jobeet8日目を読み返す。 コネクション確立用のDoctrine.php作ってなかった!

DateHelperを拡張してMM-dd形式の日付を出力させる

というような出力をしたくて、DateHelper.php -> sfDateFormat.class.phpと辿って行くと、getPattern関数に与える引数で形式を変えられることが判明。しかし、MM-dd形式での返り値がない! sfDateFormat.class.phpをオーバライドすればいいのですが、DateHe…

一つのテーブルから、複数のリレーションを張るスキーマの書き方

口でうまく言えないので、例を絵で説明すると コメントテーブルは、コメントしたユーザのidとコメントされたユーザのidを持っている。を表す方法です。 User: columns: id: type: integer(4) primary: true autoincrement: true username: string Comment: c…

connectionを得る

備忘録 $conn = Doctrine_Manager::connection(); 続けざまにトランザクション $conn->beginTransaction(); try { // ... } catch (Exception $e) { $conn->rollback(); }

今度こそ、さらば、Failed to write cache file

setgidを使えば、「グループ」を変更できることは分かったので、パーミッションをいかに変更するかを調べました。 file_put_contents前にumaskかます 例えば、設定ファイルのキャッシュは、sfConfigCache.class.phpのwriteCacheFileメソッドが作成します。 …

Failed to write cache fileは何故起きるのか?

まず、http://d.hatena.ne.jp/TakiTake/20090104/p1では嘘書いてしまい申し訳ありませんでした。 Failed to write cache fileですが、キャッシュを上書きしようとすると起きるようです。 例 # apps/frontend/config/settings.yml dev: .settings: web_debug:…

さらば、Failed to write cache file

この内容は、間違っています。申し訳ありませんでした。 こちらをお試しください http://d.hatena.ne.jp/TakiTake/20090111/p1 settings.yml書き換えて、 $ symfony ccしたら、Failed to write cache fileですよ。 毎回、 $ sudo chmod -R 777 cacheするのも…

symfony1.2でDoctrine1.1使ってJobeetチュートリアル23日目

本番環境へ移行する回。 Previously on Jobeet 昨日は、キャッシュ設定の仕方について学びました。そして、本番環境で運用する準備が整いました。 22日目までは、開発環境(大抵はローカルマシーンではないでしょうか)で開発していました。本番環境で開発し…

symfony1.2でDoctrine1.1使ってJobeetチュートリアル22日目

ページをキャッシュして描写を素早くの回。 いよいよ詰んだ。Doctrineはキャッシュ周りが未だ不安定です。 Previously on Jobeet yamlの設定ファイルは、php形式に変換されてキャッシュされている。 今回は、ページあるいはパーツをキャッシュする。 Creatin…

symfony1.2でDoctrine1.1使ってJobeetチュートリアル21日目

やっと、20日目のなんちゃって翻訳終了。 さて、21日目はデザイン品評会なんで見てるだけー。 どのデザインも、検索ボックスの横にサーチボタンがあって、ですよねーと思いました。 デザインでだいぶ印象変わるね。 やっぱデザイン大事。

symfony1.2でDoctrine1.1使ってJobeetチュートリアル20日目

ついに20台まで来たよ。 pluginの説明とjobeetをplugin化しようの回。 subversionでバージョン管理している場合は、s/mv/svn mv/ で移動を明示的にして行方不明になるのを防ぎませう。 行方不明にしちゃった場合は、行方不明になったファイルをまとめて消す…

symfony1.2でDoctrine1.1使ってJobeetチュートリアル19日目

国際化のターン。 Language Switching 日本語は、jpかな?と、安易にfrをjpに置換したら、怒られた。 さーせん、jaでしたね。 でも、料理と一緒でまずはレシピ通りにやろうと思います。 Templates __()関数通すと、レンダリング時にユーザの言語に合わせて文…

symfony1.2でDoctrine1.1使ってJobeetチュートリアル18日目

Ajaxの回。 いきなり、prototype.jsからjQueryに浮気かい! たしかに、jQueryの人気っぷりは凄いからなぁ。 AJAX in an Action 通常の通信とAjax通信で返すViewを変える処理が、わかりやすいコードで好きです。 今更ですが、"Post a Job"ボタンと検索ボタン…

symfony1.2でDoctrine1.1使ってJobeetチュートリアル17日目

data/job.dev.indexの中身は、ころころ変わるので svn propedit svn:ignore dataで、 *.*.indexと書き込んで保存。 検索のインデックスフォルダ(job.dev.indexって書くより、*使ってあいまい指定が便利)をsubversionの管理外にするといいんじゃないかと ち…

symfony1.2でDoctrine1.1使ってJobeetチュートリアル16日目

The Fixtures symfony doctrine:data-loadしようとしたら、Integrity constraint violationと怒られた。 jobeet_jobテーブルがjobeet_categoryテーブルのcategory_idを参照してるので、先にjobeet_categoryテーブルを空にできないからと思われる。 手動で、j…

symfony1.2でDoctrine1.1使ってJobeetチュートリアル15日目

Feed配信しようの回 // php.ini short_open_tag = Onのせいで、xml宣言がPHPの構文エラーになっていたので、Offにして # /etc/init.d/httpd restart

symfony1.2でDoctrine1.1使ってJobeetチュートリアル14日目

一休みの日 14日目は、Jobeetとしては何もしないみたいなので、コードリーディングに役立つvim pluginの紹介をしたいと思います。 project.vim windowの左側に、フォルダをツリー形式で表示してくれる。 ファイルの位置が直感的にわかるので、重宝してます。…

symfony1.2でDoctrine1.1使ってJobeetチュートリアル13日目

後半戦突入! User Attributes // apps/frontend/modules/job/actions/actions.class.php job = $this->getRoute()->getObject(); // fetch jobs already stored in the job history $jobs = $this->getUser()->getAttr…

symfony1.2でDoctrine1.1使ってJobeetチュートリアル12日目

設定ファイル変更したら、キャッシュクリアしないと反映されないよ。 symfony cc --env="backend" Backend Look and Feel sf_admin_barが邪魔です。 sf_admin_barのfloatがleftになってるのが原因でしたので // web/css/my.css #sf_admin_bar { float: none …

symfony1.2でDoctrine1.1使ってJobeetチュートリアル11日目

Formもテストしよう回。 Submitting a Form clickシミュレート後のモジュール、アクションのチェックだからwithの位置は $browser->info('3 - Post a Job page')-> info(' 3.1 - Submit a Job')-> get('/job/new')-> with('request')->begin()-> isParameter…

symfony1.2でDoctrine1.1使ってJobeetチュートリアル10日目

Form周りの話。 Customizing the Job Form // apps/frontend/modules/job/template/showSuccess.php <img src="/uploads/jobs/<?php echo $job->getLogo() ?>" alt="<?php echo $job->getCompany() ?> logo" /> imageタグきた! getLogo(), array('raw_name' => tr…

symfony1.2でDoctrine1.1使ってJobeetチュートリアル9日目

今回は、書いてある通りでほぼ問題なかったです。 ただ、test/functional/frontend/jobActionsTest.phpのテストが成功したり、しなかったりと不安定。 こっちは原因究明中。 てか、 tr:last:contains("102")この記法正しく解釈してない。 tr:lastや tr:conta…

symfony1.2でDoctrine1.1使ってJobeetチュートリアル8日目

テストもプログラムしよう回 Adding Tests for new Features テスト項目増やすなら、lime_testへの引数の数字も増やす。 // 第一引数(この場合7)は、テスト項目数と合わせる。 $t = new lime_test(7, new lime_output_color()); Adding Tests because of …

symfony1.2でDoctrine1.1使ってJobeetチュートリアル7日目

Update the Database symfony doctrine:build-all-reloadしたら Validation error in class JobeetJobって怒られた。 data/fixtures/jobs.ymlの内容が、JobeetJobのバリデーションに引っかかったらしい。 解決方法 expires_atが'Y-m-d h:i:s'形式じゃない所…

symfony1.2でDoctrine1.1使ってJobeetチュートリアル6日目

Debugging Doctrine generated SQL Doctrineが作ったSQLは、そのままじゃ実行できないよ。 phpMyAdminとかで、SQLのデバッグしたいときに一手間必要。 デバッグツールバーのボンレスハムみたいなボタン押すと、Doctrineが作ったSQLが見られる。 SELECT j.id …

symfony1.2でDoctrine1.1使ってJobeetチュートリアル5日目

躓いたとこをメモ svnリポジトリの内容が、Propel仕様だった 12/13 追記(getObject問題解決) lib/model/JobeetJob.phpを開きましょう? lib/model/doctrine/JobeetJob.class.phpですね、わかります。 # apps/frontend/config/routing.yml job_show_user: u…

symfony1.2でDoctrine1.1使ってJobeetチュートリアル4日目

躓いたとこをメモ 画像が見つからない apps/frontend/templates/layout.phpを変更した後 http://jobeet.localhost/frontend_dev.php/job/new見てもデモと違う。 厳密には、自分の場合公開ディレクトリの場所変えてるから http://colinux/~takitake/jobeet/fr…

symfony1.2でDoctrine1.1使ってJobeetチュートリアル3日目

もうちょっとSQLよりで記述したい! ってことで、Doctrine使ってみようと思います。 新たなチュートリアルとしてJobeetが始動しているので、Doctrineの練習がてら作ってみる。 躓いた箇所をメモ 1,2日目は紹介や概念の解説なので略。 3日目で待望のDoctr…

あなたとnatural joinしたい

joinしたテーブル(外部キー参照していない)のカラムをセレクトに設定できなくて詰まりました。 join損ですよ。 方法が無い訳では無いようですが、現状の知識ではソースが解読できなかったので、DB設計から見直すことに。 もともと、破綻してたしいい機会。…