symfony PHPフレームワークpart2 (531レス)
1-

245: 239 [sage] 2010/10/21(木) 01:56:28 ID:??? AAS
認証情報はセッションに入ってるものだと思ってました。
認証情報はどこに保存されているんでしょう??
246: nobodyさん [] 2010/11/04(木) 18:06:43 ID:kCotlNfK(1) AAS
ファイルアップロードで、ファイル名の「'」が「\'」になるんですけど
これってSymfonyの問題ですか?
PHPも初心者なもんでどうすればいいのか分かりません。。。
247: nobodyさん [sage] 2010/11/06(土) 13:24:52 ID:??? AAS
問題があるとしたらファイル名に「'」を使ってることかな
248: nobodyさん [sage] 2010/11/07(日) 05:37:42 ID:??? AAS
php初心者というかパソコン初心者レベルだな
249: nobodyさん [sage] 2010/11/08(月) 03:03:57 ID:??? AAS
セッション(認証?)が30分程度で切れてしまいます。
以下の設定だけでは、変更できないんでしょうか?

#.htaccess
php_value session.gc_maxlifetime 86400
php_value session.gc_probability 1
php_value session.gc_divisor 100

#setting.yml
all:
user:
class: myUser
param:
timeout: 86400
250: nobodyさん [sage] 2010/11/08(月) 20:05:11 ID:??? AAS
factories.ymlに書くんだと思う

user:
class: myUser
param:
timeout: 86400

こんな感じ
251: nobodyさん [sage] 2010/11/09(火) 20:43:10 ID:??? AAS
さんくす!
252
(2): nobodyさん [sage] 2010/11/13(土) 05:16:41 ID:??? AAS
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さん [sage] 2010/11/13(土) 07:15:40 ID:??? AAS
>>252
credentails: [admin]
じゃなくて?
sfDoctrineGuardPlugin使ったことないからよくしらんけど
254: 252 [sage] 2010/11/13(土) 21:33:07 ID:??? AAS
「Notice: Undefined offset: 1」のエラーのほうは、

外部リンク:www.symfony-project.org
を参考にしたAPP/congig/generator.ymlの変更をやめて、
中身を全部削除したらうまくいったみたい。
255: nobodyさん [sage] 2010/11/14(日) 02:59:13 ID:??? AAS
日別のアクセス数を集計しようとしてるのですが、正常にうごきません。
日付の比較がおかしくなっている感じがします。

スキーマはこんな感じです。
AccessLog:
 tableName: access_log
 actAs: { Timestampable: ~ }
 columns:
  user_id: varchar(50)
256: nobodyさん [sage] 2010/11/14(日) 03:01:31 ID:??? AAS
コードと同等(と思っている)の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さん [sage] 2010/11/14(日) 03:04:05 ID:??? AAS
ついでに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さん [sage] 2010/11/14(日) 19:32:35 ID:??? AAS
(たぶん)解決しました。

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

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

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

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

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

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

このあたり、どうにかなりませんか?
260: nobodyさん [] 2010/11/15(月) 21:25:47 ID:WH+q5o59(1) AAS
こうゆう複雑なSQLはDoctrineでできますか?
Doctrineは単純なSQLだけで、複雑な合成はPHPでやったほうがいいのかな。

SELECT u.id as u__id,
u.username as u__username,
s.date as s__date,
a.access as a__access,
s.sales as s__sales
FROM sf_guard_user u
LEFT OUTER JOIN
(SELECT user_id,
DATE(created_at) AS date,
SUM(amount) AS sales
FROM sales
GROUP BY user_id, DATE(created_at)) s
ON u.username = s.user_id
LEFT OUTER JOIN
(SELECT user_id,
DATE(created_at) AS date,
count(*) AS access
FROM access_log
GROUP BY user_id, DATE(created_at)) a
ON u.username = a.user_id
AND s.date = a.date
WHERE u.username = 'admin'
AND s.date > '2010-11-01 00:00:00'
AND s.date < '2010-12-01 00:00:00'
ORDER BY s.date;
261
(3): nobodyさん [sage] 2010/11/15(月) 23:40:15 ID:??? AAS
これ、どうゆう意味ですか?

> 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 [sage] 2010/11/15(月) 23:41:34 ID:??? AAS
#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さん [sage] 2010/11/16(火) 03:02:08 ID:??? AAS
sfGuardPluginついでに。

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

フォームのプルダウンでuser_id=0のアカウントを選択してポストすると、
user_id=1として格納されてしまいます。
なんで〜??
264: nobodyさん [sage] 2010/11/16(火) 03:53:30 ID:??? AAS
user_idをauto_incrimentにしてない?
265: 261 [sage] 2010/11/16(火) 13:36:35 ID:??? AAS
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 [sage] 2010/11/16(火) 13:38:26 ID:??? AAS
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
(4): nobodyさん [sage] 2010/11/16(火) 21:13:48 ID:??? AAS
フォーム難しいですね。。。

スキーマでは user_id(type:integer) にリレーションしてるんだけど、
フォームでは user_name(type:varchar(255)) で入力したい場合はどうすればいいですか?
268: 267 [sage] 2010/11/16(火) 21:27:44 ID:??? AAS
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 [sage] 2010/11/16(火) 21:31:08 ID:??? AAS
 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;
 }

}
1-
あと 262 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.021s