Archive for 4 月, 2008
[symfony]sfWebBrowserPluginでHTTP_RequestやHTTP_Clientの代用
symfonyでHTTPリクエストを投げるときは、sfWebBrowserPluginを使えそうです。PEAR::HTTP_RequestやHTTP_Clientの代わりですかね。GETとPOSTの送信ができて、本文が取得できるってのは確かです。
インストールはコマンド一発。
C:\xampp\workspace\Kyuko>symfony plugin-install http://plugins.symfony-project.com/sfWebBrowserPlugin >> plugin installing plugin "http://plugi...project.com/sfWebBrowserPlugin" >> pear downloading sfWebBrowserPlugin-1.0.1.tgz ... >> pear Starting to download sfWebBrowserPlugin-1.0.1.tgz (11,366 >> pear bytes) >> pear .. >> pear ...done: 11,366 bytes >> pear WARNING: channel "pear.symfony-project.com" has updated its >> pear protocols, use "channel-update pear.symfony-project.com" to >> pear update >> pear install ok: >> pear channel://pear.symfony-project.com/sfWebBrowserPlugin-1.0.1 C:\xampp\workspace\Kyuko>symfony plugin-list Installed plugins: sfWebBrowserPlugin 1.0.1-stable # pear.symfony-project.com (symfony) symfony 1.0.11-stable # pear.symfony-project.com (symfony)
使い方は、
-
$b = new sfWebBrowser();
-
$b->get($url);
が一番簡単な例。sfWebBrowserPluginのページに簡単な例やエラー処理の例が載っているので詳しくはそっちで。
No comments[symfony]プロジェクト全体で使う定数を定義する
symfonyにて、プロジェクト全体(全てのアプリケーション)で使えるような定数を定義するには、
- config/settings.ymlを開く(なければ作成)
- 環境指定の識別子を記述(all、prod、test、dev、・・・)
- その下の階層に定数名と定数内容を記述(階層化OK)
- プログラム中から、sfConfig::get('sf_xxxxx');でアクセス(階層化した場合はアンダー(_)で区切る)
な感じです。
具体例としては
-
all:
-
request:
-
url: http://labs.uechoco.com/blog/
-
method: post
と設定すると
-
sfConfig::get('sf_request_url')
-
sfConfig::get('sf_request_method')
で値の内容が取得できます。
より詳しい説明は、symfony book 日本語ドキュメント 設定の説明を見てください。(でも、ちょっと見にくいんだよなぁ。。。)
No comments[symfony]PEARのライブラリをインストールする
symfonyでHTTP_Requestのようなプラグインがあるのかどうかわからなくて、必死に探して時間を使うのも馬鹿らしいので、素直にPEAR::HTTP_Requestを使おうと思います。(そういうプラグイン知っている人が居たら教えてください!!)
で、symfonyにPEARをインストールできるんだろうか?って思ったわけなんですが、symfonyのプラグイン自体がPEARのパッケージっぽいらしいので、symfony plugin-installコマンドを使えばPEARのライブラリがインストールできそうです。
さっそくインストール。
C:\xampp\workspace\Kyuko>symfony plugin-install HTTP_Request >> plugin installing plugin "HTTP_Request" >> pear WARNING: channel "pear.php.net" has updated its protocols, use >> pear "channel-update pear.php.net" to update >> pear WARNING: "pear/Net_URL" is deprecated in favor of >> pear "pear/Net_URL2" >> pear downloading HTTP_Request-1.4.2.tgz ... >> pear Starting to download HTTP_Request-1.4.2.tgz (16,398 bytes) >> pear .. >> pear ....done: 16,398 bytes >> pear downloading Net_URL-1.0.15.tgz ... >> pear Starting to download Net_URL-1.0.15.tgz (6,303 bytes) >> pear ...done: 6,303 bytes >> pear downloading Net_Socket-1.0.8.tgz ... >> pear Starting to download Net_Socket-1.0.8.tgz (5,441 bytes) >> pear ...done: 5,441 bytes >> pear install ok: channel://pear.php.net/Net_URL-1.0.15 >> pear install ok: channel://pear.php.net/Net_Socket-1.0.8 >> pear install ok: channel://pear.php.net/HTTP_Request-1.4.2
インストールできたかの確認。
C:\xampp\workspace\Kyuko>symfony plugin-list Installed plugins: HTTP_Request 1.4.2-stable # pear.php.net (pear) Net_Socket 1.0.8-stable # pear.php.net (pear) Net_URL 1.0.15-stable # pear.php.net (pear) symfony 1.0.11-stable # pear.symfony-project.com (symfony)
使い方は知らないので、また勉強してきます。
P.S.
-
require_once 'plugins/HTTP/Request.php';
でHTTP_Requestが使えるようにはなりました。
P.S.
もしかして、sfWebBrowserPluginを使えばいいのかな?PEARの使い方わかったらsfWebBrowserPluginも調べておこう。
[symfony]PropelException「No connection params set for propel」
symfonyで、CriteriaでdoSelect()したり、propel-init-adminで作ったモジュールを実行しようとすると、[PropelException]が発生し、「No connection params set for propel」と言われた。
symfony propel-build-schemaコマンドとかも実行できるので、コネクションがないって言われても原因がなかなか思いつかなかったけれど、よく見たら、config/databases.ymlのコメントアウト(#)をはずし忘れていたというオチ。
No comments[php][symfony]propel-build-modelで「Unable to parse default value as date/time value: ‘0000-00-00 00:00:00′」
symfonyで新しくプロジェクトを作っています。(練習がてら)
DB周りの開発手順として
- DBDesigner4でDBデザイン
- DBDesigner4でSQL発行
- 発行したSQLをDBに適応
- propel関連のini/yml設定を変更してデータベースに接続可能状態にしておく
- propel-build-shemaでshema.yml作成
- propel-build-modelでモデル作成
という感じのものを想定してやっていったのですが、propel-build-shemaで作成したshema.ymlが良くないらしく、propel-build-modelが以下のようなエラーを吐きます。
-
Execution of target "om-template" failed for the following reason: C:\xampp\php\PEAR\symfony\vendor\propel-generator\build-propel.xml:470:1: Unable to parse default value as date/time value: '0000-00-00 00:00:00'
-
[phingcall] C:\xampp\php\PEAR\symfony\vendor\propel-generator\build-propel.xml:470:1: Unable to parse default value as date/time value: '0000-00-00 00:00:00'
該当部分のschema.ymlのカラム定義を抜き出してくると、
-
deleted_at:
-
type: TIMESTAMP
-
default: 0000-00-00 00:00:00
というように、確かに自分で設定したデフォルト値が埋め込まれていますが、残念ながら受け付けてくれない模様。自動生成のschema.ymlなので、手動修正はしたくないと思って、結局デフォルト値を消すことで解決しました。まぁ、カラムが削除日時記録のためのものなので、NULLでもいいかなっと思ったわけです。
まぁいっか。
No comments