のくす牧場
コンテンツ
牧場内検索
カウンタ
総計:126,341,493人
昨日:no data人
今日:
最近の注目
人気の最安値情報

    私的良スレ書庫

    不明な単語は2ch用語を / 要望・削除依頼は掲示板へ。不適切な画像報告もこちらへどうぞ。 / 管理情報はtwitter
    ログインするとレス評価できます。 登録ユーザには一部の画像が表示されますので、問題のある画像や記述を含むレスに「禁」ボタンを押してください。

    元スレsymfony PHPフレームワークpart2

    php スレッド一覧へ / php とは? / 携帯版 / dat(gz)で取得 / トップメニュー
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。
    レスフィルター : (試験中)
    ←前へ 1 2 3 4 5 6 7 8 9 10 11 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitter
    251 : nobodyさん - 2010/11/09(火) 20:43:10 ID:???.net (+45,+27,-1)
    さんくす!
    252 : nobodyさん - 2010/11/13(土) 05:16:41 ID:???.net (+17,-30,-156)
    sfDoctrineGuardPlugin使ってます。
    バックエンドで、is_super_adminなアカウントだけ閲覧を許可していんですけど
    以下のsecurity.ymlでうまくいきません。クレデンシャルが違うんでしょうか?

    index:
    is_secure: true
    credentials: admin

    それと、新規登録時に
    Notice: Undefined offset: 1 in D:\MyProject\symfony\lib\vendor\symfony\lib\config\sfGeneratorConfigHandler.class.php on line 68

    という謎のエラーが出てしまいます。
    sfGuardAuthに空のgenerator.ymlを作ると治るという情報があったのですが
    治りませんでした。他に解決方法はありませんでしょうか?
    253 : nobodyさん - 2010/11/13(土) 07:15:40 ID:???.net (-1,-30,-14)
    >>252
    credentails: [admin]
    じゃなくて?
    sfDoctrineGuardPlugin使ったことないからよくしらんけど
    254 : 252 - 2010/11/13(土) 21:33:07 ID:???.net (-2,-30,-57)
    「Notice: Undefined offset: 1」のエラーのほうは、

    http://www.symfony-project.org/blog/2008/11/12/call-the-expert-customizing-sfdoctrineguardplugin
    を参考にしたAPP/congig/generator.ymlの変更をやめて、
    中身を全部削除したらうまくいったみたい。
    255 : nobodyさん - 2010/11/14(日) 02:59:13 ID:???.net (+3,-30,-46)
    日別のアクセス数を集計しようとしてるのですが、正常にうごきません。
    日付の比較がおかしくなっている感じがします。

    スキーマはこんな感じです。
    AccessLog:
     tableName: access_log
     actAs: { Timestampable: ~ }
     columns:
      user_id: varchar(50)
    256 : nobodyさん - 2010/11/14(日) 03:01:31 ID:???.net (+3,-30,+0)
    コードと同等(と思っている)のSQLをMySqlコマンドラインから実行すると、正常にいきます。

    SELECT a.id, a.user_id, COUNT(*), DATE(a.created_at) AS date
    FROM access_log a
    WHERE (a.user_id = 'admin' AND a.created_at > '2010-11-01 00:00:00' AND a.created_at < '2010-11-29 23:59:59')
    GROUP BY date ORDER BY a.created_at;

    「->andWhere('a.created_at < ?',$end)」の行を抜かすと一応取得はできます。
    原因はなんでしょうか?

    $id = 'admin';
    $start = "'2011-11-01 00:00:00'";
    $end ="'2011-11-30 23:59:59'";

    $this->accesslogs = Doctrine_Query::create()
    ->select('a.user_id, count(*) as count, DATE(a.created_at) as date')
    ->from('accesslog as a')
    ->where('a.user_id = ?',$id)
    ->andWhere('a.created_at > ?',$start)
    ->andWhere('a.created_at < ?',$end)
    ->groupBy('date')
    ->orderBy('a.created_at')
    ->execute();

    257 : nobodyさん - 2010/11/14(日) 03:04:05 ID:???.net (+3,-30,-171)
    ついでにfixture.ymlも書いておきます。

    AccessLog:
     log1:
      user_id: admin
      created_at: '2010-11-13 21:56:54'
     log2:
      user_id: admin
      created_at: '2010-11-13 21:56:54'
     log3:
      user_id: admin
      created_at: '2010-11-14 21:56:54'
     log4:
      user_id: admin
      created_at: '2010-11-14 21:56:54'
     log5:
      user_id: admin
      created_at: '2010-11-15 21:56:54'
    258 : nobodyさん - 2010/11/14(日) 19:32:35 ID:???.net (+3,-29,-48)
    (たぶん)解決しました。

    ->from('accesslog as a')
    じゃなくて
    ->from('accesslog a')
    に変えると期待通りに動きました^^;

    夜中3時間悩んだのに、昼に起きて5分で解決しました。
    休憩や睡眠って大事ですね。みなさんもがんばってください。

    なんで$endの行が無いときにうまくいったかは謎のままですが。。。
    259 : nobodyさん - 2010/11/14(日) 23:36:38 ID:???.net (+3,-30,-203)
    sfDoctrineGuardPluginって使ってる人いる??
    symfony慣れてないくせして導入してみたんだけど、symfonyとバージョン合ってないのかな?

    sfGuardRememberMeFilterが機能してない気がする。

    settings.ymlで
    enabled_modules: [default, sfGuardGroup, sfGuardUser, sfGuardPermission, sfGuardAuth, sfGuardForgotPassword]
    を記述しても、バックエンドに追加されてない。
    sfGuardUserは手動でバックエンドに追加できるけど、sfGuardPermissionは足りないファイルがたんまり。ネットで拾ってきてもまともに動かない。

    あと、save-fixtureしてリロードすると、パスワードがハッシュされてログインできなくなる。

    このあたり、どうにかなりませんか?

    261 : nobodyさん - 2010/11/15(月) 23:40:15 ID:???.net (+33,-30,-213)
    これ、どうゆう意味ですか?

    > 500 | Internal Server Error | Doctrine_Query_Exception
    > The root class of the query (alias s) must have at least one field selected.

    ユーザー毎の売上げを集計したいだけなんだけど。。。

    #action.php
     public function executeSalelist(sfWebRequest $request)
     {
       $this->saless = Doctrine_Query::create()
       ->select('s.user_id as id, p.name, sum(s.amount) as amount')
       ->from('Sales s')
       ->leftJoin('s.Profile p')
       ->groupBy('id')
       ->execute();
     }


    262 : 261 - 2010/11/15(月) 23:41:34 ID:???.net (+3,-30,-133)
    #schema.yml
    Sales:
     tableName: sales
     actAs:    { Timestampable: ~ }
     columns:
      user_id:
       type: integer
      amount: integer
     relations:
       User:
        class: sfGuardUser
        foreign: id
        local: user_id
        type: many
        onDelete: cascade
        foreignType: many
        foreignAlias: Sales
       Profile:
        class: sfGuardUserProfile
        foreign: user_id
        local: user_id
        type: many
        onDelete: cascade
        foreignType: many
        foreignAlias: Sales
    263 : nobodyさん - 2010/11/16(火) 03:02:08 ID:???.net (+3,-30,-50)
    sfGuardPluginついでに。

    > $this->setWidget('user_id', new sfWidgetFormDoctrineChoice(array('model' => $this->getRelatedModelName('User'))));

    フォームのプルダウンでuser_id=0のアカウントを選択してポストすると、
    user_id=1として格納されてしまいます。
    なんで~??
    264 : nobodyさん - 2010/11/16(火) 03:53:30 ID:???.net (-1,-29,-21)
    user_idをauto_incrimentにしてない?
    265 : 261 - 2010/11/16(火) 13:36:35 ID:???.net (+3,-30,-141)
    selectからp.nameをとるととりあえずいける。
    Profileがおかしいのかな?

    Sales:
    tableName: sales
    actAs: { Timestampable: ~ }
    columns:
    user_id:
    type: integer
    amount: integer
    relations:
    User:
    class: sfGuardUser
    foreign: id
    local: use_id
    type: many
    onDelete: cascade
    foreignType: many
    foreignAlias: Sales
    Profile:
    class: sfGuardUserProfile
    foreign: user_id
    local: user_id
    type: many
    onDelete: cascade
    foreignType: many
    foreignAlias: Profile
    266 : 261 - 2010/11/16(火) 13:38:26 ID:???.net (+3,-30,-201)
    sfGuardUserProfile:
    tableName: sf_guard_user_profile
    actAs: { Timestampable: ~ }
    columns:
    id: integer
    user_id:
    type: integer
    primary: true
    bank_name: varchar(50)
    bank_point: varchar(50)
    bank_type:
    type: enum
    values: [ordinary, current]
    default: ordinary
    name: varchar(50)
    bank_number: varchar(50)
    relations:
    User:
    class: sfGuardUser
    foreign: id
    local: user_id
    type: one
    onDelete: cascade
    foreignType: one
    foreignAlias: Profile
    267 : nobodyさん - 2010/11/16(火) 21:13:48 ID:???.net (+43,-30,-40)
    フォーム難しいですね。。。

    スキーマでは user_id(type:integer) にリレーションしてるんだけど、
    フォームでは user_name(type:varchar(255)) で入力したい場合はどうすればいいですか?
    268 : 267 - 2010/11/16(火) 21:27:44 ID:???.net (+3,-30,-198)
    Newのときは下記コードでうまく「ユーザー名入力→ユーザーIDに変換」できるようになったんですが、
    Editのとき編集フォームがuser_idのままです。。。

     public function configure()
     {
      $this->widgetSchema['user_id'] = new sfWidgetFormInputText();
      $this->setValidator('user_id', new sfValidatorString(array('max_length' => 128, 'required' => true)));
      $this->validatorSchema->setPostValidator(new sfValidatorCallback(
       array(
        'callback' => array($this, 'validateUsername'),
       ),
       array(
        'invalid' => 'アカウント名を正しく入力してください。',
       )
      ));

     }
    269 : 267 - 2010/11/16(火) 21:31:08 ID:???.net (+3,-30,-87)
     public function validateUsername(sfValidatorBase $validator, $values)
     {
      if (strlen($values['user_id']))
      {
       $user = Doctrine_Core::getTable('User')->findOneByUsername($values['user_id']);

       if (!$user)
       {
        throw new sfValidatorError($validator, 'invalid');
       }

       $values['user_id'] = $user->getId();
      }

      return $values;
     }

    }

    270 : 267 - 2010/11/16(火) 22:50:03 ID:???.net (+57,+29,-19)
    コンストラクタ上書きでできたけど、上記含めてお作法的にこれでいいんかな。。。

    271 : 267 - 2010/11/16(火) 23:45:05 ID:???.net (+3,-30,-225)
    このスレにはお世話になってるし、
    だれかの役に立つかもしれないから、動いたコンストラクタのコードも一応書いときます。
    けんちゃんより(はぁと)

     public function __construct($defaults = array(), $options = array(), $CSRFSecret = null)
     {
      if(isset($defaults['user_id']))
      {
       $user = Doctrine_Core::getTable('User')->find($defaults['user_id']);
       if($user)
       {
        $defaults['user_id'] = $user->getUsername();
       }
      }
      parent::__construct($defaults, $options, $CSRFSecret);
     }
    272 : nobodyさん - 2010/11/17(水) 05:44:26 ID:???.net (+3,-30,-205)
    他システムへのアクセスがあったときに、タスクを用いてSymfony側にアクセスログを取ろうとしています。

    実行すると「There is no open connection」というエラーが出てしまいます。
    なにがおかしいんでしょうか?

    > $databaseManager = new sfDatabaseManager($this->configuration);
    > $connection = $databaseManager->getDatabase('links')->getConnection();
    を追加してみたのですが、
    「 Database "links" does not exist.」
    というエラーが出てしまいます。これは正しいDB名です。


    273 : nobodyさん - 2010/11/17(水) 05:46:56 ID:???.net (+9,-30,-237)
    C:\MyProject\link>php symfony link:access user01 111.111.111.111

    #accessTask.class.php
    <?php

    class accessTask extends sfBaseTask
    {
     public function configure()
     {
      $this->namespace = 'link';
      $this->name   = 'access';
      $this->addArgument('username', sfCommandArgument::OPTIONAL);
      $this->addArgument('ip', sfCommandArgument::OPTIONAL);
     }

     public function execute($arguments = array(), $options = array())
     {

      $access = new Accesslog();
      $access->setUsername($arguments['username']);
      $access->setIp($arguments['ip']);
      $access->save();
      $this->log('access from '. $arguments['ip']);
     }
    }
    274 : nobodyさん - 2010/11/17(水) 10:31:09 ID:???.net (+4,-30,-81)
    >>273
    ・extends sfDoctrineBaseTaskにする
    ・executeの冒頭に
    $configuration = $this->createConfiguration('users', 'cli');
    new sfDatabaseManager($this->configuration);
    と書く。

    理屈は知らんがw
    doctrineならこれで動くんじゃね
    275 : nobodyさん - 2010/11/17(水) 10:31:58 ID:???.net (-1,-29,-18)
    あ、ごめん。createConfigurationの最初の引数はapp名で。
    276 : nobodyさん - 2010/11/17(水) 17:22:41 ID:???.net (+3,-30,-17)
    できた~!

    しっかし重いなぁ。。。
    まだ連動させてないけど、Doctrineがログ吐くのが悪さしないといいんだけど。
    (-quiet指定したら、"-u","-i","-e"オプションが無いとエラーが出たのであとで調べる。)
    277 : nobodyさん - 2010/12/13(月) 19:58:07 ID:???.net (+3,-29,-110)
    マイグレーションについてなんですけど、
    カラムの追加は公式ドキュメントでなんとなく分かりました。

    ただ、テーブル(既存テーブルとのリレーション有り)を新たに追加する場合は
    どうすればよいのでしょうか?
    Symfonyが吐いたテーブル作成のSQL文をコピペしてprod環境で実行、
    モデル等のファイルをアップロード、
    キャッシュクリア
    というような手作業になるのでしょうか?
    ビルドはいらないですよね?
    278 : nobodyさん - 2010/12/13(月) 22:35:02 ID:???.net (+2,-29,-18)
    http://localhost/example/web/index.php → http://localhost/example/
    にするのはhttpd.cnfをいじるんかねえ?チラ)
    279 : nobodyさん - 2010/12/13(月) 23:26:51 ID:???.net (+3,-30,-152)
    まだあまりsymfonyを理解していないのですが、
    symfony doctrine:build --all --and-load
    すると、まずデータベースがdropされますよね?

    複数プロジェクトで共通のユーザー情報マスタDBを使うつもりでいるので
    1つのプロジェクトを更新するたびにユーザー情報がdropされると困るのですが、
    どのように構成すればよいでしょうか?

    #仮にユーザー情報マスタDBのスキーマだけを持ったプロジェクトを作って、
    #ほかのプロジェクトはユーザー情報DBをスキーマに記述しない構成も考えたのですが、
    #モデル等が作られないのでリレーション等が働かない気がしています。
    280 : nobodyさん - 2010/12/14(火) 07:43:09 ID:???.net (-1,-29,-3)
    >>278
    つttp://symfony-doc-ja.googlecode.com/svn/branches/1.2/html/book/09-Links-and-the-Routing-System.html#url.rewriting
    281 : nobodyさん - 2010/12/18(土) 02:06:30 ID:???.net (+19,-30,-68)
    初心者のくせにサーバでsymfony運用始めちゃったんですけど、
    新しいテーブル追加するにはどうすればいいですか??

    サーバでbuild-allするとdropしちゃいますよね?
    一旦save-fixtureすることも考えたんですが
    sfGuardPluginなんで、パスワードが変わっちゃいますよね?;;
    282 : nobodyさん - 2010/12/19(日) 00:28:41 ID:???.net (+4,-30,-134)
    >>281
    build-allじゃなくて必要なタスクだけ実行すればいいんじゃないの?

    やり方は色々あると思うけど
    例えば新しいテーブルはSQLで作って
    symfony --xml build-schema
    symfony build --model
    symfony build --forms
    symfony cc
    とか。
    283 : 281 - 2010/12/27(月) 05:22:49 ID:ZrwXahVr.net (+24,+29,-4)
    遅くなりました。
    ちょっとそれでやってみることにします。
    284 : nobodyさん - 2010/12/28(火) 01:53:08 ID:???.net (+72,-11,-45)
    駄目フレームワークの典型symfony
    だから誰も使わないし流行らない。
    285 : nobodyさん - 2010/12/28(火) 04:53:44 ID:???.net (+87,+30,-113)
    2.0で大きく変わるんだから、自身で悪い点は分かってるんだろうよ。
    フレームワークは所詮道具なんで、どれを使ってもいくつも使ってもいいと思う。
    ケースバイケース、適材適所で。
    1個覚えれば他に移行するのも楽だよ。
    俺はsymfonyともPHPとも心中する気は無いけど、
    それでも、今現在の最善策だと思って使ってく。
    5年も経てば、CakeでもZendでもない新しいフレームワークにみんな移ってると思うよ。
    そんな気持ち。
    286 : nobodyさん - 2010/12/28(火) 09:09:58 ID:???.net (-5,-30,-52)
    多言語サポートしたいんだけど、
    URLにdomain.com/jp/とかdomain.com/en/とかアドレスを分けたくない場合は
    どうすればいいですか?
    サーチエンジンからすると、分けてたほうがいいのかな??
    287 : nobodyさん - 2010/12/29(水) 03:44:19 ID:???.net (-1,-29,-18)
    なぜ英語はen(english)なのに日本語はjpですか?
    その流れではjaなのではないのですか?
    288 : nobodyさん - 2010/12/29(水) 18:34:12 ID:???.net (+0,-28,-59)
    symfony使いこなせる人はスキル高いと思うよ
    symfonyから学ぶことはたくさんある
    symfony2.0への前準備として1.4勉強するといいよ
    289 : nobodyさん - 2011/01/01(土) 06:25:49 ID:???.net (+110,+29,-22)
    2.0のチュートリアル等の日本語化は誰がやるか決まってるの?
    290 : nobodyさん - 2011/01/04(火) 10:17:31 ID:???.net (+70,+29,-21)
    >>289
    symfonyユーザー会で分担してやるんじゃね?やる気があるならユーザー会へ立候補どぞー
    291 : nobodyさん - 2011/01/04(火) 23:09:37 ID:???.net (+55,+27,-17)
    チュートリアルやってみたけどSubversion導入するところでめんどくさくなって挫折した。
    292 : nobodyさん - 2011/01/14(金) 02:52:12 ID:???.net (+64,+29,-4)
    >>284
    まぁお前が無知だから使われてること知らないだけだけどな
    293 : nobodyさん - 2011/01/14(金) 18:21:43 ID:???.net (-1,-29,-26)
    Doctrineについて質問だけど、join系にサブクエリって入れれる?
    どうもやり方が見つけられない・・・。
    294 : nobodyさん - 2011/01/15(土) 13:43:19 ID:PxyuICb1.net (-27,-30,-70)
    >>286
    JavaScript で対応。jQuery プラグインなら jquery.localize.js とか MS 謹製の jQuery Globalization Plugin が見つかるね。
    295 : nobodyさん - 2011/01/15(土) 13:44:44 ID:PxyuICb1.net (+61,+29,-14)
    >>289
    主だった人は執筆やら勉強の会の準備に忙しいから、
    296 : nobodyさん - 2011/01/15(土) 13:57:41 ID:PxyuICb1.net (+36,+29,-31)
    >>295 のつづき。すぐに翻訳はそろわないと思うよ。ただ、コードサンプルはわかりやすいから、英語が読めなくても内容をかなりつかめるんじゃないかな。
    297 : nobodyさん - 2011/01/15(土) 14:10:43 ID:PxyuICb1.net (+42,+29,-25)
    >>284
    ガラパゴス基準で考えてほしくないな。github のウォッチングランキングに入っているのでじゅうぶん人気はあると思うよ。
    http://github.com/popular/watched
    298 : nobodyさん - 2011/01/15(土) 17:49:57 ID:???.net (+84,+21,-18)
    VPSも安くなったし、もう無理してPHP使う必要無い時代になったな。
    299 : nobodyさん - 2011/01/15(土) 22:12:45 ID:PxyuICb1.net (+45,+29,-106)
    >>298
    パフォーマンスの問題というよりも、PHPでは体験できない新しい勉強をしたいということではないだろうか。世界の状況はどんどん変わってゆくのだから、>>285 と同じことだけど特定のフレームワークや言語に囚われる必然性はないよ。
    300 : nobodyさん - 2011/01/23(日) 02:44:06 ID:???.net (+52,+29,-2)
    シンプルとはいえない
    ←前へ 1 2 3 4 5 6 7 8 9 10 11 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / php スレッド一覧へ
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。

    類似してるかもしれないスレッド


    トップメニューへ / →のくす牧場書庫について