symfony PHPフレームワークpart2
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2010/03/17(水) 00:34:44ID:???フランチョスとsymfony
http://pc11.2ch.net/test/read.cgi/php/1201177567/
1.x系公式
http://www.symfony-project.org/
symfony reloaded(2.0) まだプレビュー版
http://symfony-reloaded.org/
0125nobodyさん
2010/08/27(金) 17:26:34ID:???php symfony doctrine:build --all --and-load
の説明が、「フォーム、フィルター、モデルを生成し、データベースを削除してからすべてのテーブルを再作成します。」
とありますが、スキーマにカラムを追加しても、実際のDB(MySQL)に反映されません。
先にテーブルのドロップを手作業でやらないといけないのでしょうか?
0126125
2010/08/27(金) 17:33:30ID:???0127nobodyさん
2010/08/27(金) 18:25:02ID:???0129nobodyさん
2010/08/29(日) 20:48:52ID:???Jobeet見てフォーム作ってみたんですが、入力した日本語が???になってしまいます。
DB(MySQL)はutf8で作って、layoutファイルのlangも'ja'に変えてあります。
0130129
2010/08/29(日) 22:26:26ID:???失礼しました!
0131nobodyさん
2010/08/31(火) 01:06:43ID:???内部パスだったり外部パスだったりするのは仕様ですか?
0132131
2010/08/31(火) 01:16:38ID:???0133nobodyさん
2010/08/31(火) 15:11:58ID:???どうすればいいですか?
0134nobodyさん
2010/08/31(火) 15:30:41ID:???プログレスバーを表示したいのですが、
どのようにすれば実現できますか?
0135nobodyさん
2010/08/31(火) 21:00:04ID:???enablePlugins('sfDoctrinePlugin')
してると Article とか User とか使いたい名前のフォームを
sfDoctrinePlugin\test\functional\fixtures\lib\form\doctrine
にロードしに行ってしまう。
これって別の名前使うしかないんですかね?
0136135
2010/08/31(火) 21:02:07ID:cyjNvO0b0137nobodyさん
2010/09/02(木) 02:13:37ID:???Symfony2はもう使えますか?
コンソール使えるようになった?
0138nobodyさん
2010/09/03(金) 00:34:29ID:???何度見直しても日本語訳が表示されません。
みなさんはちゃんとできたのでしょうか?
あと、messages.xmlを「php symfony i18n:extract」コマンドで更新するたびに
訳した<target>の中身がクリアされちゃうのは仕方ないんですかね。。。
1個追加するだけで、全部やりなおしなのはかなり面倒です。
0139nobodyさん
2010/09/03(金) 01:22:41ID:???検索機能使えなくなっちゃう?
0140nobodyさん
2010/09/03(金) 02:34:00ID:???0141nobodyさん
2010/09/03(金) 17:29:29ID:???ちゃんとありました。
0142nobodyさん
2010/09/03(金) 22:36:21ID:???中身にlayoutの内容が含まれてしまいます。
action内で、viewを無効化すればいいと思っているのですが
どうすれば無効化できますか?
0143nobodyさん
2010/09/03(金) 22:58:06ID:???return sfView::NONE;
0144nobodyさん
2010/09/03(金) 23:07:15ID:???ネットのサンプルいろいろ見て試していますが、
どうやってもダウンロードじゃなくて、ブラウザ内で開いてしまう。。。
しばらく格闘しそうです。。
0145nobodyさん
2010/09/04(土) 14:35:46ID:???$this->getResponse()
0146144
2010/09/04(土) 18:15:43ID:???IE、FF、Safariでmp3をダウンロードしようとすると、ブラウザ内で開いてしまいます。。。
public function executeDownload(sfWebRequest $request)
{
$filePath = $request->getParameter('file');
$fileName = 'sound.mp3';
$response = $this->getContext()->getResponse();
$response->clearHttpHeaders();
$response->addCacheControlHttpHeader('Cache-control', 'must-revalidate, post-check=0, pre-check=0');
$response->setContentType('application/octet-stream', true);
$response->setHttpHeader('Pragma: public', true);
$response->setHttpHeader('Content-transfer-encoding', 'binary');
$response->setHttpHeader('Content-Disposition', 'attachement; filename=' . $fileName);
$response->sendHttpHeaders();
$response->setContent(readfile($filePath));
return sfView::NONE;
}
0147nobodyさん
2010/09/04(土) 20:06:24ID:???0148138
2010/09/05(日) 16:15:03ID:???message.xmlの文字コードがおかしかったようです。
eclipseから見たら化けてて、修正したらきちんと表示されました。
特に文字コードを変えるようなことはした覚えないんだけどね。。。
0149144
2010/09/06(月) 00:49:18ID:???BaseFormDoctrineを継承したformクラスの中で、
getParameter('xxx')を使いたいのですが、
どのようにすればよいでしょうか
0151nobodyさん
2010/09/06(月) 02:28:19ID:???0152nobodyさん
2010/09/06(月) 13:03:00ID:???ってやればどこからでも使えるでしょ
0153nobodyさん
2010/09/08(水) 02:24:29ID:???meta language等を、カルチャーに応じて変えたいんだ。
とりあえずpreExecute()で実装しちゃったけど
他に方法があるなら聞いておきたい。
0154153
2010/09/08(水) 03:09:32ID:???どうやるのが最適解でしょうか?
0155nobodyさん
2010/09/08(水) 08:01:23ID:???0156nobodyさん
2010/09/09(木) 01:10:47ID:???0158nobodyさん
2010/09/11(土) 19:01:35ID:???/web/errors/error500.phpを設置しても、反映されませんでした。
0159nobodyさん
2010/09/11(土) 20:28:13ID:???0160nobodyさん
2010/09/11(土) 22:43:12ID:???IEだとブラウザの吐く500エラーページになってしまう。。。
FF、Safari、GoogleChromeは問題なかった。
0161nobodyさん
2010/09/12(日) 02:08:28ID:???>HTTP 500 応答の実際のテキストを表示するには、Content-Length を 512 バイト以上に設定する必要があります。
マジキチ
0162nobodyさん
2010/09/13(月) 16:47:51ID:???0163nobodyさん
2010/09/14(火) 06:51:47ID:???0164nobodyさん
2010/09/14(火) 13:49:35ID:???0165nobodyさん
2010/09/14(火) 21:20:00ID:???ほかにも「これは読んでおけ!」っていうのありますか?
>>1にまとめて書いてほしいけど、次スレは何年後か分かんないもんで><
0166nobodyさん
2010/09/15(水) 04:12:04ID:???の次は実践だろ。なんか作れよ
0167nobodyさん
2010/09/15(水) 16:22:30ID:???0168nobodyさん
2010/09/15(水) 16:26:35ID:???0170nobodyさん
2010/09/15(水) 21:29:28ID:???んで将来的には自分でフレームワークを作りたい。
0171nobodyさん
2010/09/15(水) 21:31:04ID:???もうちょっと全貌というか概略から勉強したいんだよね。
0172nobodyさん
2010/09/16(木) 00:39:38ID:???0173nobodyさん
2010/09/16(木) 02:56:34ID:???ただ実戦投入してはいけないw
0174nobodyさん
2010/09/16(木) 07:09:09ID:???0175nobodyさん
2010/09/16(木) 10:49:36ID:???PHPのプログラム的セキュリティもFWの流儀に従ってれば、
たいていは問題ない。
それよりFW使って、みんなを楽しませる、おもしろいサービスつくろうぜ!
0176nobodyさん
2010/09/16(木) 14:57:27ID:???0177nobodyさん
2010/09/16(木) 21:53:53ID:???人がやれることは限られてるのだ。時間もね。
0178nobodyさん
2010/09/17(金) 03:31:33ID:???0179nobodyさん
2010/09/17(金) 21:38:18ID:???0180nobodyさん
2010/09/17(金) 22:53:40ID:???0181nobodyさん
2010/09/18(土) 19:35:38ID:???freezeしようとしたら「Task "freeze" is not defined.」になったので、tar.gzにしてFTPで送って解凍しました。
Autoloadが、sfDoctrineが見つからないって言ったから、自分でpluginsに
SVNでVer1.1とってきたんだけど
>Fatal error: Call to undefined method RecordForm::setupInheritance() in /virtual/myname/myproject/lib/form/doctrine/base/BaseRecordForm.class.php on line 47
というエラーがでます。
Ver1.3-2.0も試したけどエラーでした。
どうしたらいいでしょうか。。。
0182181
2010/09/18(土) 19:55:07ID:???>Fatal error: Class 'sfValidatorSfCryptoCaptcha' not found
Autoloaderがうまく機能してないんかな。。
0183181
2010/09/18(土) 20:33:10ID:???plugin下を手動で再配置して直りました。
でもまた新しいエラーが。
>500 | Internal Server Error | sfConfigurationException
>The route "captcha_refresh" does not exist.
ローカルでは動くのに、なんでこんなにエラー出るんだろ。。。
0184181
2010/09/18(土) 21:54:41ID:???今度はCaptchaImageがxになるぜ!まったくなんてヤローだ。
0185nobodyさん
2010/09/26(日) 21:30:28ID:???edit_mode オプションは %%is_activated%% %%JobeetCategory%% -
%%company%% (%%email%%) is looking for a %%=position%% (%%location%%)
max_per_page: 10 sort: [expires_at, desc] batch_actions: _delete:
extend: object_actions: extend: _edit: _delete: ~ actions:
deleteNeverActivated: { label: Delete never activated jobs }
table_method: retrieveBackendJobList filter: display: [category_id,
company, position, description, is_activated, is_public, email,
expires_at] form: class: BackendJobeetJobForm display: Content:
[category_id, type, company, logo, url, position, location,
description, how_to_apply, is_public, email] Admin: [_generated_token,
is_activated, expires_at] edit: title: Editing Job "%%company%% is
looking for a %%position%%" new: title: Job Creation
0186nobodyさん
2010/09/26(日) 21:44:33ID:???前半の説明9割飛ばしてるし、後半も足りねー。
どーりで何度読んでも意味が分からないわけだ。
日本語訳アリは『○』
○ Backend Creation
× Backend Modules
× Backend Look and Feel
× The symfony Cache
× Backend Configuration
× Title Configuration
× Fields Configuration
○ List View Configuration
○ Form Views Configuration
× Filters Configuration
× Actions Customization
× Templates Customization
× Final Configuration
○ Final Thoughts
0187nobodyさん
2010/09/26(日) 21:55:28ID:???0188nobodyさん
2010/09/28(火) 01:01:17ID:???>Fatal error: Call to a member function getId() on a non-object in
>showSuccess.php on line 5
List,New,Editは問題なし。Showのみエラー。なんででしょう??
0189nobodyさん
2010/09/28(火) 16:06:48ID:???0190nobodyさん
2010/09/28(火) 17:21:48ID:???ccはキャッシュが残ることあるんで、
cacheディレクトリ以下全削除もしました。
0191nobodyさん
2010/09/28(火) 17:27:27ID:???テンプレートが更新されないのがイヤなので、
module以下のactionとtemplateを削除して
再度モジュール生成、なんてことをしたのがマズかったのかな。。。
0192nobodyさん
2010/09/28(火) 18:41:32ID:???action内では、getId()に成功して正しい値でした。
> public function executeShow(sfWebRequest $request)
> {
> $this->response = Doctrine_Core::getTable('response')->find(array($request->getParameter('id')));
> $this->forward404Unless($this->response);
># file_put_contents("d:\\debug.txt",$this->response->getId());
> }
しかし、テンプレート内でisset($response)するとfalseになります。
> Notice: Undefined variable: response in showSuccess.php on line 8
>
> Fatal error: Call to a member function getId() on a non-object in showSuccess.php on line 8
0193nobodyさん
2010/09/28(火) 18:53:05ID:???スキーマの問題でしょうか。。。
>php symfony doctrine:generate-module --with-show
> --non-verbose-templates frontend response2 response
0194nobodyさん
2010/09/28(火) 19:46:03ID:???$this->response = Doctrine_Core::getTable('response')->find(array($request->getParameter('id')));
↓
$this->resObj = Doctrine_Core::getTable('response')->find(array($request->getParameter('id')));
とか。
テンプレート側も修正が必要になるけど置換一発で行けるでしょ
0195194
2010/09/28(火) 19:48:24ID:???action,componentのクラス内で$this->requestと$this->responseはsymfonyが使う既定のプロパティだから、
$this->requestと$this->responseは設定してもビューには渡されないんだ。
参考までに
http://trac.symfony-project.org/browser/branches/1.4/lib/action/sfComponent.class.php
0196nobodyさん
2010/09/28(火) 21:50:40ID:???感謝です!!
0197nobodyさん
2010/09/29(水) 00:57:50ID:???sfWidgetFormDoctrineChoiceの中もちょっと見たのですが分かりませんでした。
実運用の時には、「リストの2番目に新しいカテゴリ名を追加したい」なんていう
変更はよくあると思うので、何かやり方はあると思うんですが。。。
0198nobodyさん
2010/10/03(日) 23:41:03ID:???スキーマを作ってDBまで作成するのは大げさだと思うので
BaseFormDoctrineを派生させて、自前でフォームを作ろうとしたのですが
アクションでnew MyformForm()すると失敗します。
>Fatal error: Class 'Myform' not found in
>C:\MyProject\lib\vender\symfony\lib\plugins\sfDoctrinePlugin\lib\form\sfFormDoctrine.class.php on line 39
こうゆうやり方はNGなんでしょうか?
0199198
2010/10/04(月) 01:35:50ID:???ところで、sfValidatorEmailが、アドレスに「"」「,」「:」「\n」なんかがあっても
許容しちゃうんだけど、みんなこのまま使ってるの??
俺は怖いから書き換えたけどね。
0200198
2010/10/04(月) 16:19:34ID:???ひょっとして、モデルも作らないとダメってことですか?
0201nobodyさん
2010/10/04(月) 17:08:59ID:???0202nobodyさん
2010/10/04(月) 17:35:35ID:???0203nobodyさん
2010/10/05(火) 18:10:52ID:???普通は国際化して、「入力が正しくありません」などに変えると思います。
新規登録画面でパスワードを2回入力させて、そのチェックに sfValidatorSchemaCompare を使っているので、
失敗時には「入力が正しくありません」じゃなくて「パスワードが一致しません」にしたいんです。
なんとかエラーメッセージを区別できないもんでしょうか?
ソースを見た感じ、"throw_global_error"オプションを設定して、自分でcatchしてハンドリングすればできそうな気もしているのですが
どこでどうハンドリングすればいいのか分かりません。
sfValidatorSchemaCompare.class.phpの117行目の「$error = new sfValidatorError($this, 'invalid', 」の
'invalid'を書き換えればひとまず対処できますが、sfValidatorSchemaCompare を他の用途で使うときに
適切でないエラーメッセージになってしまうので、ソースを直接いじるのは遠慮したいです。
どのように対処すればよいでしょうか?
0204203
2010/10/05(火) 18:40:45ID:???長々と失礼しました。
0205nobodyさん
2010/10/06(水) 15:21:59ID:???0206nobodyさん
2010/10/07(木) 10:02:16ID:???http://netbeans.org/features/php/index_ja.html
http://netbeans.org/images_www/v6/9/screenshots/php.png
0207nobodyさん
2010/10/08(金) 20:05:54ID:vQ/FE4Nt次のプロジェクトはNetbeansで作ってみるかな。
0208nobodyさん
2010/10/08(金) 20:09:07ID:vQ/FE4Ntスキーマ書き換えると、lib下やらをリフレッシュしないといけないから
毎度毎度面倒なんだよね。
0209nobodyさん
2010/10/08(金) 23:30:00ID:???0210nobodyさん
2010/10/09(土) 01:22:13ID:???php symfony doctrine:build --all --and-load --no-confirmation
php symfony doctrine:data-load
php symfony cc
このへんはいけるけど、
symfony generate:module frontend hoge
なんかは対応できないよね?
スレチだけど。
0212nobodyさん
2010/10/09(土) 16:33:33ID:???0213nobodyさん
2010/10/10(日) 04:23:44ID:???レイアウト有り/無しのhtmlをファイルに保存するにはどうしたらいいですか?
wgetで取って保存、ってのは無しでお願いします。
0214nobodyさん
2010/10/10(日) 10:25:22ID:???0215nobodyさん
2010/10/10(日) 17:54:56ID:???いま開発環境ないPCだけど、Renderフィルター覗けばなんか分かりそうな気がしてきた。
0216nobodyさん
2010/10/10(日) 19:46:16ID:???prod環境でも第2引数を画面に表示するにはどうすればいい?
0217nobodyさん
2010/10/10(日) 21:13:44ID:???Table:
columns:
id:
name:
のように定義した状態で、
executeCreate内でnameフォームの値を取得するのに「$request->getParameter('name')」や「$form['name']->getValue()」
としてみたのですが、値が取得できません。
フォームの値を取り出すにはどのようにやればいいのでしょうか?
0218217
2010/10/10(日) 22:15:33ID:???$requestArray['name']
で取得できたんですけど、毎回こうやらないとダメなんでしょうか(汗)
0219nobodyさん
2010/10/11(月) 00:09:02ID:???SQL1回の発行で済ませて欲しいのに、2回実行されているようです。
なぜでしょうか?
#schema.yml
User:
columns:
id:
name:
Thread:
local: id
foreign: user_id
type: many
Thread:
columns:
id:
user_id:
relations:
User:
local: user_id
foreign: id
type: one
0220nobodyさん
2010/10/11(月) 00:10:20ID:???public function executeIndex(sfWebRequest $request)
{
$this->thread = Doctrine_Core::getTable('thread')
->createQuery('t')
->where('t.id',$request->getParameter('id'))
->leftJoin('t.User u')
->execute();
}
#indexSuccess.php
お名前は<?php echo $thread->getUser()->getName() ?>
似たような話題で、http://blog.asial.co.jp/591 も見てみたのですが、
バージョン違いなのか全く動きませんでした。
0221nobodyさん
2010/10/11(月) 01:17:59ID:???$this->thread = Doctrine_Core::getTable('thread')
->createQuery('t')
->where('t.id',$request->getParameter('id'))
->leftJoin('t.User u')
->execute();
$this->thread = Doctrine_Core::getTable('thread')
->createQuery('t')
->where('t.id = ?',$request->getParameter('id'))
->leftJoin('t.User u')
->fetchOne();
に変えたらどう?
0222nobodyさん
2010/10/11(月) 02:17:36ID:???SQLも新しく発行されていないようです。
ただ、$thread->getId() の構文が使えなくて $thread['id'] に全部書き換えないといけませんけど><
0223nobodyさん
2010/10/11(月) 02:55:20ID:???実際はfetchArray()で取得して、foreach()でループさせました。
とりあえずうまく行ったようです。
0224nobodyさん
2010/10/11(月) 20:37:48ID:???具体的には、CSRFチェックに引っかかったとき、自動的にhoge/newにリダイレクトさせたいんです。
■ このスレッドは過去ログ倉庫に格納されています