トップページphp
511コメント153KB

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/
0458nobodyさん2013/03/26(火) 21:05:57.35ID:???
>>457
composer対応してるライブラリみたいだからcomposer.jsonのrequireに
mobiledetect/mobiledetectlibを足すだけで行けるよ。
足した後はphp composer.phar update
0459nobodyさん2013/03/31(日) 00:37:58.30ID:???
>>458
ありがとうございます!
composerも全然理解できていなかったので勉強します。

なおcomposer非対応のライブラリを使う場合は
どのようにするものなのでしょうか。
vendor以下に自分で適当にディレクトリを作って
そこに放り込むのでしょうか。
0460nobodyさん2013/03/31(日) 00:56:26.89ID:???
加えての質問失礼します。
symfony2でのtrailing slashの扱いについてです。

サイト内リンクを貼る際に
{{ path('link') }}
こちらで /pageurl/ この出力を期待しているのですが
symfony2ではURL末端はスラッシュなしが標準になっているようで
どのようにRouteの設定をしても /pageurl こうなってしまいます。

解決策について、どうかお知恵をお貸し願います。
0461nobodyさん2013/03/31(日) 09:25:53.04ID:???
失礼しました
>>460は勘違いでした。

シンプルに
@Route("/test/", name="test")
これだと期待通りに、
path('test')で/test/が出力されます。

/index.htmlがリクエストされた際にも対応しようと下記のにすると、

@Route(
"/test/{filename}",
name="test"
requirements = {
"filename" = "|index\.html"
},
defaults = { "filename" = "" }
)

path('test')で出力されるのは/testになってしまいます。
上記パターンではもスラッシュありを出力するような書き方がありましたら
どうかご教授願います。
0462nobodyさん2013/03/31(日) 22:50:47.26ID:???
symfony1.4を使用しており、アプリケーション名を変更したら、確かに画面に表示はされるんですが、
画面の一番上の行に
Warning: include(Test.php): failed to open stream: No such file or directory in 〜変更前のパス〜
Warning: include(): Failed opening 'Test.php' for inclusion (include_path='.:/usr/share/pear:/usr/share/php') in 〜変更前のパス〜
というエラーが出てきており困っております。

変更したのは、以下の箇所なんですが、他に変更するべきところってありますか?

/appsの中にある、アプリケーション名(ディレクトリ名)を変更
/web配下のファイル名とその中に記述のある、$configuration = ProjectConfiguration::getApplicationConfiguration('アプリ名', 'dev', true);変更

symfony ccをしてもダメで、cacheフォルダから昔のアプリ名のディレクトリを削除してもダメでした。
他にここを見ろってわかる方いたらお願いします。
0463nobodyさん2013/04/02(火) 12:06:44.03ID:???
symfony1系って、アクションとテンプレートが近いディレクトリにあるから、編集しやすいんだよな
rails系にしてもsymfony2にしても、コントローラとテンプレートが遠すぎて探すのめんどい

CSSデザインが当たり前の今時、デザイナーがHTMLいじらす必要なんて無いし、絶対近いほうがいいと思うんだが
0464nobodyさん2013/04/02(火) 13:18:26.75ID:???
近いとか遠いとかの概念がよくわからん
シンボリックリンクで好きに配置すれば?
0465nobodyさん2013/04/02(火) 14:35:34.10ID:???
>近いとか遠いとかの概念がよくわからん
そんなこともわからないほど頭が弱いなら無理して考えなくていいよ

そんなシンボリックリンクを作る手間をかけさせる事自体無駄な設計
0466nobodyさん2013/04/02(火) 16:27:45.59ID:???
>>459
ライブラリ側がcomposer非対応でもPSR-0に対応してればcomposer.jsonのautoloadに書くことで使えるよ
PSR-0じゃなかったらapp/autoload.phpで手動で$loaderにパスを追加することになる。
$loaderはSymfony\Component\ClassLoader\UniversalClassLoaderじゃなくて
Composer\Autoload\ClassLoaderだから書き方は要注意。
0467nobodyさん2013/04/02(火) 20:20:52.57ID:???
>>466
ありがとうございます!
とても勉強になりました。
書き方も気をつけてやってみます。
0468nobodyさん2013/04/04(木) 18:10:21.20ID:???
Symfonyバージョン2ですがtwigを編集したり
コントローラーを書き換えたものが実環境に反映されません。

php app/console cache:clear --no-warmup
これでキャッシュがクリアされるという記事を見ましたが
実行しても反映されません。
/app/cache/prodを削除するとやっと反映されます。

web/app.phpでは
$kernel = new AppKernel('prod', false);
となっていますがここら辺に間違いがあるのでしょうか。
お詳しい方教えてください。
0469nobodyさん2013/04/04(木) 23:31:40.69ID:???
>>468

app/console cache:clear --env=prod --no-debug --no-warmup

--envで、キャッシュクリア対象の環境の指定が必要(この場合は、prod)かな。
指定がない場合デフォルトだとdev環境の方のキャッシュがクリアされるはず。
0470nobodyさん2013/04/05(金) 00:11:18.74ID:???
>>469
ありがとうございます!
クリアできました!

こういうのは英文のドキュメントくらいしか
情報が載っているサイトはないのでしょうか。
0471nobodyさん2013/04/05(金) 00:20:18.15ID:???
>>470ですがすみません、日本語ドキュメントにも書かれていました。
0472nobodyさん2013/04/08(月) 11:45:47.79ID:???
教えて下さい。
Symfony 2.2.0 → 2.2.1 にアップデートしたいのですが
composer のコマンドひとつでアップデートできるものなのでしょうか。
0473nobodyさん2013/04/12(金) 23:46:26.38ID:???
>>472

プロジェクトのディレクトリに移動して
php composer.phar update

本家とのタイミングで2.2.1以上になる事態を避けたいなら、
バージョンが上がりすぎないようにcomposer.json で
"symfony/symfony" のところを 2.2.1 に書き換えて実行。

最近はあまりないけど、たまに動かん時があるから注意。
0474nobodyさん2013/04/14(日) 10:48:00.59ID:???
>>473
ありがとうございます!
さっそく試してみます!
0475nobodyさん2013/04/14(日) 20:13:12.71ID:???
iPhoneアプリ. Windowsアプリを売って生き残れ Ver 1.7 リンク数61
Http://qr. net/kh4y
0476nobodyさん2013/05/21(火) 22:52:07.42ID:eIWlTZvw
symfony2を使っているのですが、twigファイル内で普通のPHPコードを
書くことは出来ないのですか?
例えば、PHPの関数strtotimeを使いたい場合、twigファイル内で
<? echo strtotime(〜); ?> とやってもうまく行きません。もちろん、
twigファイル内で{{ 〜|strtotime() }} と書いてもうまく行きません。
Smartyの{php}{/php} のように、普通のPHPコードを書くことは出来な
いのでしょうか?
0477nobodyさん2013/05/22(水) 08:08:53.78ID:???
>>476
できません。

strtotimeを使う処理はコントローラに書くべき。
0478nobodyさん2013/05/22(水) 09:08:33.20ID:???
モデルに書くべき。
0479nobodyさん2013/05/22(水) 10:14:52.31ID:???
本来ビューにphpコードを書かなきゃいけないというのは設計が悪いと思うけど、
そういう設計をしたいならtwigを止めてphpテンプレート使えばいいんじゃね?

というかSymfony2(+Doctrine2)でstrtotimeを使わないといけない場面が想像
できないんだが…。
0480nobodyさん2013/05/23(木) 23:16:42.07ID:zrU9EndH
>>476
>>477
>>478
>>479

ご回答ありがとうございます。twigでは書けないのですね。あるAPIを使用
して取得した時刻が「20130522」のような形式なので、これをstrtotimeして
からdateで「2013-05-22」としたかったのですが、twig内でやるべきでは
ないのですね。ありがとうございました。
0481nobodyさん2013/06/07(金) 23:55:53.50ID:???
>>480
Twigでは出来ないというだけで、
表示としての加工ならView側で実装すべきだよ

Twig拡張すればええんでね?
0482nobodyさん2013/06/09(日) 00:42:20.58ID:???
Model側でタイムスタンプに変換しておくべきとかならまだしも
strtotime() = PHPコード = Viewに書くべきでは無い! みたいなレスが多いね

イレギュラーな処理は「無理」「出来ない」で片付ける、典型的なフレームワーク脳だな・・・
0483nobodyさん2013/06/09(日) 00:50:04.47ID:???
普通にtwigの拡張書くだろ
cakeでも使っといたほいがいんじゃねーのw
0484nobodyさん2013/06/21(金) 03:28:01.76ID:???
>>480
strtotime でいける書式ならそのままdate filterでいけるよ。
まずはドキュメント読みましょう。
http://twig.sensiolabs.org/doc/filters/date.html
ちなみに何か表示用の整形したい場合には自作filterで行くのが定石。

でも、APIなどから取得したものをcontroller側でDateTimeオブジェクトにするとviewがもっとシンプルに書けるよ。
0485nobodyさん2013/07/06(土) NY:AN:NY.ANID:???
DQLがゴミすぎて笑える
0486nobodyさん2013/07/07(日) NY:AN:NY.ANID:???
キャッシュのせいでエラー位置特定しづらいのも問題だわ
0487nobodyさん2013/07/10(水) NY:AN:NY.ANID:???
メリットが何も見えてこないんだが・・・。
これで開発効率上がった現場ってあるの?
0488nobodyさん2013/07/13(土) NY:AN:NY.ANID:???
ただの継ぎ接ぎをSymfonyとは勘違いも甚だしい。
0489nobodyさん2013/07/19(金) NY:AN:NY.ANID:???
Twig 内での書き方について教えてください。
app.request.scheme などでリクエスト内容の取得ができますが、
コントローラの
/**
* @Route(…,
* defaults = { "example" = "" }
* )
* @Template
*/
defaults で指定したexampleの値を取得することは可能なのでしょうか。
よろしくお願いします。
0490nobodyさん2013/07/20(土) NY:AN:NY.ANID:???
テンプレ変数に渡せばいいだろ
0491nobodyさん2013/07/23(火) NY:AN:NY.ANID:???
twigで変数をキーに入れてハッシュ作るって出来ないんでしょうか?
例えば
$hashkey='aaa';
array($hashkey=>'bbb');
を表現するのに
{hashkey:'bbb'}
と書くとダメって言われるんですがこれはtwig的には許されない?
0492nobodyさん2013/07/23(火) NY:AN:NY.ANID:???
>>491
そういう処理はControllerでやれとfabienが言ってた
https://github.com/fabpot/Twig/issues/273
0493nobodyさん2013/07/23(火) NY:AN:NY.ANID:???
>>489
defaults={"example" = "..."}がついてるアクションメソッドが$exampleをreturnしていれば(@Templateついてるから)
ビュー側でexampleで参照できる
0494nobodyさん2013/07/23(火) NY:AN:NY.ANID:???
>>492
あー、やっぱ思想的にそうしてるんですね…
これ通るように実装するのは手間じゃないだろうから、そうなのかな、とは薄々思ったんですが
gitのスレッドまで教えてもらって、とってもスッキリしました。
ありがとうございます。
0495nobodyさん2013/07/29(月) NY:AN:NY.ANID:???
symfony2なのですが、リダイレクトすると

Redirecting to リダイレクト先のURL.

と記載されたページをはさんでから転送されてしまうのですが
このページを表示させず直接リダイレクトするには
どうすれば良いのでしょうか?

/**
* @Route("/test/", name = "test")
*/
public function testAction()
{
return $this->redirect($this->generateUrl('nextpage'), 302);
}
0496nobodyさん2013/07/30(火) NY:AN:NY.ANID:???
>>495
config.ymlとか、config_dev.yml の web_profilerの設定でintercept_redirects はfalseになってる?
0497nobodyさん2013/07/30(火) NY:AN:NY.ANID:???
>>496
レスありがとうございます

はい。入っていますが表示されてしまいます
0498nobodyさん2013/07/31(水) NY:AN:NY.ANID:???
>>497
falseになってるなら、あとは、cacheクリアかな
0499nobodyさん2013/07/31(水) NY:AN:NY.ANID:???
>>498
アドバイスありがとうございます

ですがキャッシュクリアしてもやはり出てしまいます
301リダイレクトだと大丈夫なのですが…
0500nobodyさん2013/08/06(火) NY:AN:NY.ANID:???
バージョン2.3.2を利用しています
403エラーページを出したいURLも404エラーページが出てしまいます

mod_rewriteの記述はデフォルトのままから変えていないのですが
なにかテクニックが必要なのでしょうか
0501nobodyさん2013/08/06(火) NY:AN:NY.ANID:???
>>500
RewriteCond %{REQUEST_FILENAME} !-d
を追加で行けないかな?
0502nobodyさん2013/08/07(水) NY:AN:NY.ANID:???
>>501
書き加えましたがだめでした

ところで質問したあとに気づいたのですが
エラーページもSymfonyで制御して出すようにしているので
mod_rewriteは関係なかったですね…
0503nobodyさん2013/08/17(土) NY:AN:NY.ANID:???
symfony2.3.3で、doctrine:generate:crudを使用しているのですが、作成されるviewがtwigになります。
これを作成される段階で、phpテンプレートにしたいのですが、方法などありますか?
0504nobodyさん2013/09/13(金) 09:43:01.29ID:???
doctrine寄りの質問になるのかもしれませんが…
Softdeletable で論理削除を利用しているのですが
論理削除されたレコードがDBに残っている状態のときに
ユニーク制約のひっかかる id のオブジェクトを登録をしようとすると
制約にひっかかってしまって登録されません。

てっきり勝手に on duplicate key update 指定が入るかと思ったのですが
実行されているSQLを確認したところそういったこともないようでして…

こういったことを想定すると、オブジェクトを生成してpersistで登録するのではなく
prepareでSQLを発行して登録するしか回避法はないでしょうか

お詳しい方ご助言をお願いします
0505nobodyさん2013/10/05(土) 21:52:12.12ID:???
phalconのスレは無いのかな?
0506nobodyさん2014/03/02(日) 09:38:35.74ID:???
>>1
オブジェクト指向は愚かな考え。排便メソッドを実装した人間クラスから美少女クラスが作れない。
http://toro.2ch.net/test/read.cgi/tech/1393660194/87
0507nobodyさん2014/03/15(土) 15:21:49.02ID:???
サイトのドメイン名によって使用するコントローラを
切り替えることは可能なのでしょうか

…Bundle\Controller\ 以下に配置したコントローラは
すべて読み込まれてしまうようなのですが
たとえば
example.com だったなら AaaController.php
example.jp だったなら BbbController.php
だけ読み込む、というようにしたいのです。
0508nobodyさん2014/03/18(火) 07:24:42.11ID:???
Routingの設定でhostってのがあるからそれにマッチさせれ
0509nobodyさん2014/04/20(日) 22:42:37.07ID:oUBZc4dT
このチュートリアルのバリデーションが全く動かないんだけど
Symfony2.4だとやり方変わってる?

http://docs.symfony.gr.jp/symfony2/osc2011-nagoya-symfony2-tutorial/symfony2-php-framework-development-tutorial.html#id23
0510nobodyさん2014/04/21(月) 00:43:04.07ID:???
>>510
Min,Max制約は無くなった。
0511nobodyさん2014/04/21(月) 06:46:13.16ID:???
>>510
なるほど
でもNotEmpty制約も効いてないみたいなんですよね
一応見なおして他の部分はサンプル通りになっているはずなんですが…
■ このスレッドは過去ログ倉庫に格納されています