トップページ⇒php
1001コメント266KB

lt;?php symfonyとフランチョスのスレ ?gt;

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2006/11/18(土) 08:05:59ID:???
■symfony
http://www.symfony-project.com/

■askeet
http://www.symfony-project.com/askeet

■The symfony book
http://www.symfony-project.com/content/documentationHome.html

■symfonyで作られたサイトはこちら
http://www.symfony-project.com/trac/wiki/ApplicationsDevelopedWithSymfony#Japan


ver.1まで間近 がんばれフランチョス & ファビエンヌ フュージョンで
開発パワー2倍だ!


0376nobodyさん2007/02/20(火) 09:56:19ID:???
uninstallしてからinstallしなおしたら入ったわぁ
PEARのupgradeの意味あるんかいな。。
0377 ◆AngelH/kMI 2007/02/20(火) 10:39:18ID:???
>>375-376
PEARのバージョンは?
あと、自分も一時期よく失敗してたけどRC1あたりから失敗することが無くなった気がする。
0378nobodyさん2007/02/21(水) 10:57:30ID:???
>>377
PEAR 1.4.9でupgrade失敗、
バージョンが悪いのかと仕方なく1.5にするもupgrade失敗
だったお
0379nobodyさん2007/02/22(木) 01:58:28ID:???
>>378
システムディレクトリに残ってるゴミは消したか?
pear.iniだとかそのへん。

まぁ俺はPEAR使ってないから関係ないが。
0380nobodyさん2007/02/22(木) 10:26:57ID:???
JavaScriptなValidatorはまだ実装されんのかねー
スニペットに書いてたAJAXなやり方だと負荷かかりすぎるわ。。
QuickForm風なヘルパーでも作るしかないかな。。
0381nobodyさん2007/02/22(木) 23:55:16ID:???
教えてください。

propelで作ったメソッドに
$a = AAAAPeer::doSelectJoinBBBB($c);
と
$b = AAAAPeer::doSelect($c);
があるのですが、
$b->getBBBB();
でBBBBのオブジェクトが取り出せます。
doSelectJoinBBBBはどんなときに使うと良いのでしょうか。
0382nobodyさん2007/02/23(金) 01:30:16ID:???
>>380
symfonyに期待するのではなく、既存ライブラリを組み込んでみた方が吉かと
ttp://blog.masuidrive.jp/articles/2006/01/05/validation

>>381
18章にある。恐らく欲しい答えが。
So if you know that you will need related objects, call a doSelectJoinXXX() method to reduce the number of database queries--and improve the page performance.
つまりは、外部キーでリレーションしているオブジェクトをとってくるなら
doSelectJoinXXX()関数のほうが1度のクエリで取得できるので
パフォーマンスがちょびっと良いってことらしい。
0383nobodyさん2007/02/23(金) 07:14:50ID:???
>>382
ありがとう!

$b->getBBBB(); de またDBにアクセスするんですね。

doSelectJoinAll()だと、けっこうメモリ消費しそう・・・
0384nobodyさん2007/02/23(金) 18:29:27ID:???
>>382
レスサンクス!
そのvalidatorは見つけてたんだけど、
どうやってもprototypeを先に読み込んでくれないので腹立ってやめたw
日付フォームがあるせいだとは思うんだが。。
0385nobodyさん2007/02/23(金) 19:52:58ID:???
>>384
読み込み順序の指定(first or last)しても駄目だった?
0386nobodyさん2007/02/24(土) 22:19:07ID:???
>>385
そんなのあったのか!必死で探したのに。。
どこにあるの?orz
0387nobodyさん2007/02/24(土) 22:47:39ID:???
>> 386
アクション内だと
$this->getResponse()->addJavaScript('prototype', 'first');
view.ymlでも指定できる
0388nobodyさん2007/02/26(月) 08:39:23ID:???
それをヒントにview.ymlの方を探してきた(´Д`)マジサンクス
後発の方もいるかもしれないので
----

// In the view.yml
indexSuccess:
stylesheets: [special: { position: first }]

[php]
// In the action
$this->getResponse()->addStylesheet('special', 'first');
0389nobodyさん2007/02/26(月) 09:52:17ID:???
よく見たらStylesheetだったw でもactionのほうでなんとかなったのでサンクスorz
0390nobodyさん2007/02/26(月) 15:00:43ID:+JAM5eUf
質問です。
forwardメソッドを使う時に、パラメータを指定したい場合はどう書けば良いのでしょうか?
0391nobodyさん2007/02/26(月) 16:45:15ID:???
>>390
forwardの場合は、redirectと違ってそのまま使えないか?

・・・と、ここまで書いてふと思ったんだが、
// 一つ前のactionを取得する
$stack = $this->getContext()->getActionStack();
$size = $stack->getSize();
$action = $stack->getEntry($size - 2)->getActionInstance();
// 一つ前のmessageを拾う
$this->message = $action->message;
↑こんな感じの事をしたいのか?
0392nobodyさん2007/02/26(月) 17:34:38ID:???
>>391
例えば
$this->forward('userinfo','edit');
等でさらにユーザidを指定したい場合にどうすれば良いのかなと。
0393nobodyさん2007/02/26(月) 17:38:27ID:+JAM5eUf
初歩的な質問ですみませんが、
validator:
fields:
の設定はフォームタグのアクション属性に設定したアクションについて設定して、
fillin:
の設定はフォームを出力するアクションについて設定すれば良いのですよね?
0394nobodyさん2007/02/26(月) 19:39:24ID:???
doSelectRS()の返値がfetchRow出来ないのだけど
どうやって取り出したら良いの?
0395nobodyさん2007/02/26(月) 19:40:56ID:???
>>390
$this->getRequest()->getParameterHolder()->set('id', $id);
こんな感じでリクエストにセットすれば?
0396nobodyさん2007/02/26(月) 20:01:12ID:???
>>392
>>395氏の言ってる方法が一番楽そうだと思う。

が、$this->user_idとしておいて>>391氏の方法を使えば、$action->user_idで取り出せるし、
自分だったら、forwardはやめて$this->redirect('userinfo/edit?user_id='. $user_id);
とする。
(redirectだと、渡したパラメータのみが引き継がれる事に注意。)

>>394
今、環境が無いのでおぼろげな記憶を頼りに書いてるんで間違ってたら申し訳ないが、
doSelectRS()って、result idが返るだけじゃなかったっけ?
doSelect()にしておくか、hydrate()する必要あるんじゃない?
03973922007/02/26(月) 21:06:21ID:???
>>395-396
レスありがとうございます。
その方法でやってみます。
redirectについてですが、
フォームのバリデーション後のrepopulationとしてのforwardですので
redirectだとエラーメッセージが出せない問題があります。
(それもリクエストにセットすれば良いのでしょうが、forwardだとデフォルトで出せます)
0398nobodyさん2007/02/27(火) 08:36:20ID:???

input_in_place_editor_tagをつかってます。
submit後
<p id="???"> aaa </p>これが、

<p class="" style="background-color: transparent; background-image: none; display: none;" title="Click to edit" id="???"><p id="???"> bbb </p></p>
上記のように<p>タグが入れ子になってしまいます。

分かる方見えませんでしょうか。

0399nobodyさん2007/02/27(火) 19:35:26ID:???
sfMail でメールを送信すると、softbank?の携帯で文字化け
するのですが、何か解決方法はありませんか?

0400nobodyさん2007/02/27(火) 20:08:56ID:???
sfMailってutf-8だよね。
04013992007/02/27(火) 20:24:12ID:???
メールは ISO-2022-JP で送っています。

とりあえず、わかっている事は・・・
sfMail は phpmailer をラップしている。
setCharset で文字コードを指定できる。
PC(OE),docomo,au では文字化けしない。
メールのソースを見ると本文がエンコードされていない?

って感じです。
softbankではこうするみたいなtipsって誰かしらないですか?
0402nobodyさん2007/02/28(水) 20:10:52ID:zzIvX9Qb
forwardはreturnのようなもので実行されるともう処理が実行元に戻って来ませんが
戻って来てほしい場合に使うべき方法って何かありますか?
0403nobodyさん2007/02/28(水) 21:26:04ID:???

JavascriptHelperに InPlaceCollectionEditor ってないよねぇ

0404nobodyさん2007/02/28(水) 22:27:39ID:???
Google グループ作ってそっちで問答した方がいいよーなきがしつつ答えてみる

>>402
forwardのかわりにgetPresentationForでできる
ttp://develop.ddo.jp/new-tech/php/framework/symfony/memo/action/
の「描画処理させずに描画結果を変数で取得したい」参照

>>403
input_in_place_editor_tagがある
ttp://symfony.jp/index.php?Ajax
さんぷる
ttp://tool-man.org/examples/edit-in-place.html
0405nobodyさん2007/02/28(水) 22:37:24ID:???
って書いた後にinput_in_place_editor_tagだとテキストだから
質問の答えになってないな。スマソ。
0406nobodyさん2007/02/28(水) 22:54:52ID:???

なんでInPlaceCollectionEditor ないんだろ
0407nobodyさん2007/03/04(日) 00:37:01ID:???
ひろしです。
何度アップグレードしようとしても
下記のようなエラーが表示されアップグレード出来んとです。
ERROR: pear.symfony-project.com/symfony not installed

どうすればアップグレード出来るようになるかわかる方いらっしゃいましたら
やり方をお教え頂きたいとです。
0408nobodyさん2007/03/04(日) 02:11:00ID:???
>>407
symfony/symfony-beta
0409nobodyさん2007/03/04(日) 02:21:35ID:???

symfonyでiso-2022-jpのメールを送るのはどうすれば良いでしょうか。
$var = $this->getPresentationFor('mail','send');
これでやってみましたが、全文が取得されてしまい
ヘッダ部とメール本文が分けれません。

0410nobodyさん2007/03/04(日) 05:41:03ID:???
The Definitive Guide to symfonyってsymfonyサイトで見れるじゃん
わざわざ買った奴オワタ
0411nobodyさん2007/03/04(日) 09:28:49ID:???
>>410
紙ベースの方が見易いって人もたくさんいると思うけどね。
0412nobodyさん2007/03/04(日) 14:27:42ID:???
>>411
実際そうでもなけどね
0413nobodyさん2007/03/04(日) 15:41:09ID:???

フランチョス の寄付だろ?
0414nobodyさん2007/03/04(日) 15:43:02ID:???
本の方が読みやすいと思うけどな。
特に英文読むのは疲れるから。
0415nobodyさん2007/03/04(日) 16:07:42ID:???
日本語の本なら買うけど
英文はページ翻訳できる分htmlの方がいい
0416nobodyさん2007/03/04(日) 17:31:16ID:G5zu5HC1
http://codezine.jp/a/article/aid/837.aspx?p=2
を参考にsymfonyを勉強しているんですが、symfony propel-build-schemaの所で
[propel-creole-transform] There was an error building XML from metadata: Could not connect [User Info: host=localhost dbname=\'codezine\' user=\'postgres\']
と言ったエラーが出ます。
databases.ymlのphptype: をpgsql
propel.iniを下記に変更しています。
propel.database = pgsql
propel.database.createUrl = pgsql://localhost/
propel.database.url = pgsql://postgres:@localhost/codezine

環境はwinXP Apache2.2 postgreSQL8.1です。

どこがおかしいのでしょうか。。
どうかご教授のよろしくお願い致します。
0417nobodyさん2007/03/04(日) 17:51:43ID:???
フランチョスはフラ公のくせにアメ語で本書けてすげーな
04184092007/03/04(日) 20:20:08ID:???

iso-2022-jpでメールを送信することがどーしても出来ません。

PHPMailer の CreateBody()メソッドでメールのbody部を処理している
ようなのですが、ここでmb_convert_encodingをしようと思います。

このような場合はオーバーライドすればいいのでしょうか。

0419 ◆AngelH/kMI 2007/03/04(日) 20:44:55ID:???
>>416
エラーメッセージにcodezineという名のデータベースが存在しない、と表示されているわけだけど。
何らかの環境からそのDBへの接続は成功してる?
0420nobodyさん2007/03/04(日) 20:49:49ID:???
schema.xmlがあるんじゃないか?
0421nobodyさん2007/03/04(日) 23:26:09ID:???
ajaxからポストされるデータをvaildateしてる?
0422nobodyさん2007/03/04(日) 23:34:43ID:???
1.0になっていつの間にか
$sf_last_module/$sf_last_action消えてね?
form書く時面倒くさくなくて良かったのに。
0423nobodyさん2007/03/04(日) 23:43:01ID:???
消えてる…完全に…w・h・y・?
0424nobodyさん2007/03/04(日) 23:53:28ID:???
$sf_context->getActionStack()->getLastEntry()->getModuleName()などで
取得はできるが…面倒くせえ…why…
04254072007/03/05(月) 00:00:12ID:???
>>408
pear upgrade symfony/symfony-beta
とやっても
ERROR: pear.symfony-project.com/symfony not installed
と表示されるとです。
0426nobodyさん2007/03/05(月) 00:07:33ID:???
http://www.symfony-project.com/trac/wiki/Documentation/ja_JP

ディフィニティブガイドを
地道に訳してくれてる人がいるな
0427nobodyさん2007/03/05(月) 01:03:36ID:???
>>409
だれも無反応なので反応してみる
$this->getPresentationFor('mail','simpleSend','myMail');
のようにsfMailの代わりのクラスを指定できることはご存知?

>>426
ttp://d.hatena.ne.jp/courant/20070302/1172836123
6月ごろには全部みれるかもよ
0428nobodyさん2007/03/05(月) 02:31:26ID:???
0.6.3以来久しぶりに見るけど
ZFの影響も見られるね
actionのregisterValidator廃止して
代わりにvalidateメソッド実装させたり。
mojaviの血が薄くなっていく…
0429nobodyさん2007/03/05(月) 08:33:59ID:???
>>424
PHPIDE
0430nobodyさん2007/03/05(月) 17:09:07ID:???
validatorディレクトリに
アクション名.ymlを作って
そこに
fillin:
enabled:true
って書いたらフォームに値をセットしてくれるんですよね?
書いてみても思ったように動作しないのですが何か他に作業が要りますか?
アクションクラスやテンプレートファイルは触る必要あります?
0431nobodyさん2007/03/05(月) 19:08:11ID:???
fillin:
  enabled:  on
  param:
    name:  フォーム名称
0432nobodyさん2007/03/05(月) 19:16:01ID:???
http://www.symfony-project.com/book/trunk/10-Forms
このページによると
enabled: true
と書かれていますが、確かにonと書かれている記事もWEB上で見つかります。
どちらが正しいのでしょう?

name値は、ページにフォームが一つしかない場合省略出来ると書かれているので
書いていません。
ちなみに、書くとすればformタグのnameですよね?
0433nobodyさん2007/03/05(月) 19:18:51ID:???
>>429
IDEの補完機能使えって意味?
ZS使ってるから自動補完は効くんだけど、
それでも面倒は面倒。
Viewを変更できない(sfPHPViewで決め打ちされてる)から
ヘルパで解決しようと思ってるよ
0434nobodyさん2007/03/05(月) 21:09:04ID:???
>>432
'true', 'on', '+', 'yes', 'y' ==> true
ってことで両方とも正解
0435nobodyさん2007/03/05(月) 22:51:36ID:???
userinfoテーブルと
grouptableテーブル(m:nテーブル)と
groupinfoテーブル(所属グループ)があって、
複数のユーザが一つのグループに、
または一人のユーザが複数のグループに属す場合がある
というようなDB設計になっているのだけど、
schema.ymlのgrouptableのとこにfkについて書いてみたら
doSelectJoinAll()がgrouptableクラスにしか生成されず、
それを使ってみたらgrouptableからuserinfoを辿って
userinfoからまたgrouptableを辿って、RECURSIONだと言うエラーが出て
壊れ気味の結果セットが返ってきます。
どこが間違っているのでしょうか?
何か参考になるページがあれば教えて下さい。
0436nobodyさん2007/03/06(火) 00:12:35ID:???
イモくさかったバリデーション関係随分すっきりしたなー
yamlだと動的に出来なかったけど
callbackバリデータも整備されたし。
( ^ー゚)♭fabien GJ!!
0437nobodyさん2007/03/06(火) 00:27:19ID:???
>>436
>yamlだと動的に出来なかったけど
できるよ。YAML内にPHP埋め込める
0438nobodyさん2007/03/06(火) 00:30:25ID:???
>>433
んなわけねーだろw
0439nobodyさん2007/03/06(火) 00:30:41ID:???
まじ?そんなに柔軟だったのか
逆に柔軟すぎて怖い気もしないでもないが…
0440nobodyさん2007/03/06(火) 01:16:04ID:???
DOM拡張モジュール入ってないorz
symfony使おうと思ったら
PHPをソースから入れるの前提ですか
0441nobodyさん2007/03/06(火) 01:18:35ID:???

そんなことはない。
rpmでOK。

それより今日のカンファレンスは行くのか?
巴里のどこだ?
0442nobodyさん2007/03/06(火) 01:30:33ID:???
パリのロンドンじゃね?
0443nobodyさん2007/03/06(火) 01:39:18ID:???
>>441
RPMのconfigureを後から変えられるの?
0444nobodyさん2007/03/06(火) 02:04:29ID:???
linuxでphp5使ってるでしょ?

yum で普通にゲットできるでしょ。
0445nobodyさん2007/03/06(火) 02:19:05ID:???
おまいら、
escaping_strategy と escaping_method
って設定してる?
これってすげー重い気がするけど、どうですか。
0446nobodyさん2007/03/06(火) 02:45:15ID:???
yum install php-dom
0447nobodyさん2007/03/06(火) 03:11:59ID:???
>>444,446
激しくthanks!
あやうく色々入れ直すところだった
0448nobodyさん2007/03/06(火) 03:50:43ID:???
>>445
設定してるけど特に遅さは気にならない
大量のオブジェクトをアサインしたら遅くなるのかな
0449nobodyさん2007/03/06(火) 06:18:28ID:???
>>437
In the production environment, the configuration is cached, so the configuration files are parsed (and executed) only once after the cache is cleared.
って言ってるから完全に動的ではないんじゃ?
設定ファイル中の定数的な値を嵌め込んだりはできるけど
0450nobodyさん2007/03/06(火) 06:34:36ID:???
いつの間にかコンバータも出来てるじゃん
プレビューリリースで不満だったところが全部直ってる感じ。
素晴らしい。
0451nobodyさん2007/03/06(火) 17:57:11ID:???
repopulationのfillinが効かないんだけど、つかえてる人いるの?
0452nobodyさん2007/03/06(火) 18:09:52ID:???
criteriaはsqlの隠ぺいのために使ってるんだろうけど、要らないね。
ものすごくいらない。
あと俺の考えだとモデルクラスがテーブルごとに作られるのもおかしい。
クラスは共通、オブジェクトに名前つけて区別すれば良い。
コードを自動生成するとはいっても滅茶苦茶質の悪いものを大量に吐いてるだけな印象。
手で組むとしたらありえないくらい冗長なコードになってる。
なんで世界的に勢いのあるFWがこんなレベルなんだ。
0453nobodyさん2007/03/06(火) 19:23:13ID:???
文句はsymfonyじゃなくて、Propelへどうぞ
Propelいやなら、Doctrineでも使ってみたら
0454nobodyさん2007/03/06(火) 19:30:08ID:???
>>452
>あと俺の考えだとモデルクラスがテーブルごとに作られるのもおかしい。
>クラスは共通、オブジェクトに名前つけて区別すれば良い。
これに関しては同意しかねる、O/Rマッパすらないんじゃ話にならねえ

が、propelがイケてないのは同意
railsのactiverecordを真似てphpで実装しようとすると
どうしても言語実装のせいで限界が出てくるので
モデルクラスを先に全部生成しちゃってお茶を濁してる感じ
実装上しょうがないのはわかるがあまり好きじゃない
04554522007/03/06(火) 19:45:19ID:???
>>454
俺が言ってる設計は、例えば
$userinfos=sf_db::getTable("userinfo");
$articles=sf_db::getTable("article");
というようなもの。
コード書くときはいつもこういう設計をしてるし実際うまくいってると思う。
0456nobodyさん2007/03/06(火) 20:00:36ID:???
fillinつかえてない?
frontendで見たときにfilterのとこちゃんと見てみて。

あと、htmlのキャッシュどうなってる?
0457nobodyさん2007/03/06(火) 20:33:43ID:???
symfonyのアクションクラスの中でpearのDB.phpをrequireするとエラー出る?
symfonyのgetConnectionとexecuteQuery使うと
返値の結果セットがfetchRowもってなくて面倒なのでDB.php使いたい。(使うしか方法が分からない)
doSelectの返値はたしかtoArrayメソッドがあるけど、executeQueryの返値にはないとか
非常にめんどいが、こんな仕様にする必要があるのだろうか?
とりあえず俺は検索を実行して配列を得たいのだけど、どうすれば良いんだろう?
本当はdoselectjoinallとかが使えれば良いんだけど変な動作するし
一つjoinするだけならdoselectjoinxxxxでいけるけど二つ以上はダメとかそんな仕様ありえんし。
04584572007/03/06(火) 20:35:25ID:???
配列じゃないからarray_mergeもうまくいかんし
symfonyはjoinに対してどんな手段を提供してるの?
0459nobodyさん2007/03/06(火) 20:36:07ID:???
fillin使えてない人はform名入れるところにform内要素名入れてるんじゃね?
俺はそれでつまった
0460nobodyさん2007/03/06(火) 20:44:01ID:???
DBだけは自前実装してる
「こうしたいんだけどどうするんだろう?」の疑問を調べるのに
時間食いまくりでぶち切れた。
04614572007/03/06(火) 20:49:18ID:???
ああ俺もたった今ぶち切れたところだ
mysqlに直接ログインして手で叩いて複数レコード返るのを確認したSQLが
$con=Propel::getConnection();
$rs=$con->executeQuery($sql);
var_dump($rs);
ってやると1レコードも返ってきてないのはなぜだなぜ挙動が違うんだ
糞仕様のせいでかえれねえええええええええええええええええええええええ
0462nobodyさん2007/03/06(火) 22:18:22ID:???
PDOで実装してくれ。

必ずプリペアドもつけてくれよ。
0463nobodyさん2007/03/06(火) 22:56:21ID:???
>>457
もちつけ。
$rsがNULLってるってこと?
それとも$rsが結果の配列ではないという事なのかな?

俺の環境では$rsにはイテレータが返ってきて、

while($rs->next()){
print $rs->get("COLUMN_NAME");
}

って感じでアクセス出来るけどなぁ。
0464nobodyさん2007/03/07(水) 00:04:54ID:???
漏れも>>407と同じエラー(ERROR: pear.symfony-project.com/symfony not installed)
って出てインスコできないんだけど原因わかる人いたら教えて
ちなみにbetaつけてやってみたけど�_だった orz
0465nobodyさん2007/03/07(水) 00:22:46ID:???
あーやっぱりsfExecutionFilterとかsfValidatorManager書き換えてえ
ハードコーディング癖は直ってねーなfabien
カンファレンスで直訴してくるか
fucking連呼で
0466nobodyさん2007/03/07(水) 01:23:10ID:???
オリジナルヘルパの上に一枚ラップする感じに
myヘルパ書いたら結構いい感じになった。
こういうのは生でするもんじゃねーな
0467nobodyさん2007/03/07(水) 04:35:52ID:???
symfonyはXSS対策のトークン用意してないの?
0468nobodyさん2007/03/07(水) 04:41:57ID:???
なにそれ。
0469nobodyさん2007/03/07(水) 06:05:56ID:???
正しい画面からポストされたかどうかを確かめるワンタイムトークン…
0470nobodyさん2007/03/07(水) 06:11:30ID:???
それってXSS?

XSS対策は escaping_strategy じゃないっすか?
0471nobodyさん2007/03/07(水) 06:16:46ID:???
あ、CSRFか…
0472nobodyさん2007/03/07(水) 06:23:30ID:???
入力画面1→入力画面2→入力画面3→登録
って流れだったら、
画面遷移ごとにバリデーションしておいて、
登録前にもう一回全部をバリデーションするじゃん。
そうなるとvalidate/*.ymlが冗長になるけど
そのあたりどうしてますか?
0473nobodyさん2007/03/07(水) 08:33:59ID:???
> 登録前にもう一回全部をバリデーションするじゃん。
そんなことはない。

バリデーションさせたいときに、各アクションのvalidate/*.ymlを
作ればよい。
0474nobodyさん2007/03/07(水) 09:13:32ID:???
>>467
setFlashで簡単に実装できる
04754572007/03/07(水) 11:48:08ID:???
>>463
$rsはNULLではないが、
$rs->getRow()の結果がNULL
■ このスレッドは過去ログ倉庫に格納されています