[表示 : 全て 最新50 1-99 101- 201- 2chのread.cgiへ]
Update time : 05/10 00:57 / Filesize : 93 KB / Number-of Response : 259
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

【PHP】Ethna part.2【国産フレームワーク】



1 名前:nobodyさん [2007/08/03(金) 08:15:18 ID:BNMV6wHx]
国産フレームワーク、Ethnaでいい意味で手抜きなプログラミングライフを。

Ethna -PHPウェブアプリケーションフレームワーク-
ethna.jp/

SourceForge.jp: Project Info - Ethna
sourceforge.jp/projects/ethna/

クラスドキュメント(phpDocumentor)
ethna.jp/doc/

前スレ
【PHPフレームワーク】Ethna【スケルトン自動作成】
pc11.2ch.net/test/read.cgi/php/1123070439/

145 名前:nobodyさん [2008/04/17(木) 18:34:38 ID:LCosruMP]
Viewに書いたのには

1.フォームを表示するための処理なのでView
2.受け取るフォームは1画面なのでActionClassなどでやるべきじゃないよね?

と、一応 私なりの理由があるのですが、フレームワークの作法的にはどうする
のが正解なのでしょうか?
質問ばかりですみません。

146 名前:nobodyさん mailto:sage [2008/04/18(金) 17:41:26 ID:???]
つーかEthnaってもう終ってます?

147 名前:nobodyさん mailto:sage [2008/04/18(金) 17:46:41 ID:???]
まあ環境が自由でこれから新規で何か作ろうという時に使うもんではないな

148 名前:140 mailto:sage [2008/04/18(金) 18:13:47 ID:???]
>>144
> smartyの html_select_dateのようなヘルパ

EthnaでInputタグ吐き出し系のヘルパ(Smartyプラグイン)ものは、
ActionFormを絡めないと効果半減以下なので、Smarty標準のものは使わないなー。
ActionFormはグローバルで取れるから。

日付とかは、セレクトタブで選ばせるのは意外とツライかもなので、
ttp://labs.spookies.co.jp/static/
とかのを使ったSmartyプラグインとか作った方がいいのかも。

> 複数の画面で共通して使いたいフォーム
これは結構悩みどころなんだけど、そういう場合は、フローとしても
共有部分が根っこにひとつありそうなものなので、そのActionFromで定義。
その時に、
var $form_template
で定義すると、必要なフォーム定義だけ
var $form = array( 'use_form1' => array(), 'use_form2' => array(),);
てやると定義を再記述せずに良い。で、「あーだけど、'use_form1' は基本
必須だけど、ここ(以下のAction)だけは必須にしたくないなー」っていうときは、
'use_form1' => array(
'required' => false,
),
とかすると、required=>falseを除いて全部定義を引き継ぐようになる。

最初、'use_form1' => array(),とか書くのさえダルイなーとか思ってたけど、
これ結構合理的。

あと、あんまり共有化を考えるとあとで縛られまくるから、ある程度差が出てきたら
「えい」ってコピペするのが吉。一度それで死にそうになったことがあるので。

149 名前:140 mailto:sage [2008/04/18(金) 18:15:30 ID:???]
つーか、138=146ならもう書く気なくなた

150 名前:144 [2008/04/18(金) 18:36:06 ID:ImKomyWi]
>>148
たびたび、どうもです。

/public/
/users/
/suppliers/
/admins/
とディレクトリを別けていて/public/のページにすべて検索フォームをつけたいんだけど
action/public.php の $formに書くのが吉ということですね。

あと、検索、一覧、編集というような画面を作るとき面倒なので ActionFormを一つにして
変数で処理を分けているんですが、検索のときに用いる $form定義と 編集のときに用いる
$form定義がかぶるんですが、これって対処するものですか?

表示・入力用 = id, pass, name とかで
検索用= s_id, s_pass, s_name とかにするとか?

このへんイマイチわかっていません。
お願いいたします。

151 名前:140 mailto:sage [2008/04/21(月) 22:59:35 ID:???]
>>145
>Viewに書いたのには....
それはそれで一つの解だと思う。正解は無いから自分にあった方法を見つければ。

自分の場合は、EthnaはActionForm==ActionClassなところがあるから、
ActionFormの動的な定義(セレクトタブの中身とか、ラジオの選択肢とか)なんかはActionClassのprepare()でやることが多い。
本当はActionFormのコンストラクタでやれるといいのだけど、ActionFormでは
AppManagerを取れないから。(DBも取れなかったのかもな・・。)

それに、あるActionFormをつかうフローでは、そのフロー以下では
そのActionFromって継続的に定義されているべきなことが多い。
だから、大元で定義しちゃえば、あとはparent::prepare();でオk。

とにかく、parent::prepare();とparent::perform()を効率的に使うと良い。
使いすぎると、「あれれれれ・・・・・?どこで定義してるんだ?」になって
しまうけど、まぁ通常のコードよりはスパゲティ化しにくい。少なくともActionで定義というルールを作っておけば。

152 名前:140 mailto:sage [2008/04/21(月) 23:03:23 ID:???]
>>150
>action/public.php の $formに書くのが吉ということですね。
それ以降で、特にActionForm定義にカスタマイズが無ければそれでOK。
あとは、それ以降のActionClassでは定義のみの空のクラスを作ればOKなんで。

逆に、action/public以下で細かいActionForm定義を加えたい場合は、
ActionClassのprepare()でやっても良いし、
もうちょい頻繁に定義を書き換えたい場合はaction/publicの$formではなく
$form_templateにしておいて、各それ以下のclassで$formを名前だけ空配列で
定義。カスタマイズするところだけを追加定義。




153 名前:140 mailto:sage [2008/04/21(月) 23:08:12 ID:???]
>>150
>検索のときに用いる $form定義と 編集のときに用いる$form定義がかぶる
これは自分はそのままやってる。
というのは、結局DBを背景に考えているから。
学校名で検索ってあったら、検索する時も、編集する時も、schoolテーブルの
school_nameフィールドから検索すると思うが、その時に検索時と編集で
formキーが違うとなんかうっとうしい。

でも、検索時はschool_nameはnot requiredだし、編集時はrequriedだから・・・
という場合にやっぱりさっきの動的なActionFormの定義が役に立つ。

んで、これをさらに共通化させて、
action/public
action/admins
で同じForm定義を使い回そう・・・・とか考えるとハマる。ここは素直に面倒でもどっちか
先に作ってからコピペ。そのうち仕様も変わるだろうし、pucblicとadminsで違うものに
なっていくのは目に見えているからな。



154 名前:138 !(146) mailto:sage [2008/04/23(水) 00:39:20 ID:???]
>>140様 超、ありがとうございます。
規制されていたので返信が遅くなりました。
聞きたいことは山ほどあるんですが..........w

フレームワークを使うのは cakePHPをメンテナンスで少し触ったんですが
国産でいいのないかなぁと探して見つけたのが Ethnaだったんです。
Greeでも使われているし、それなりに信頼できるのかなぁ?ということと
smartyはしょっちゅう使っていたのでヘルパに smartyが使われいたので
他のは全然評価もせずに Ethnaに決めてしまって、いまかなり苦しんでいます。
使用人口が少ないようで、WEB上にドキュメントが少ない(´・ω・`)

途中ZFに切り替えようかとも思いましたが、ZFはバージョンアップごとに色々
問題があるようなので、やめときました。


155 名前:140 mailto:sage [2008/04/23(水) 21:44:20 ID:???]
Ethnaは小回りが利くっていうか、軽い。まぁちろっと使う分には便利だと思う。
Cakeは一度使ってみるかと思いつつ、コード見て「んー。汚い・・・」って思って使ってない。

SynfonyとかcakePHPとかガッツリ使うほど大きな案件請けてるわけじゃないんよ。
あと、Ethna枯れてるしな。FWって枯れ時が実案件で使い時っつーところもあるし。

156 名前:138 [2008/04/23(水) 22:26:16 ID:EWcSFprb]
またまた規制されてしまった
最近、月のうち半分以上が規制されている感じ…

なので携帯からです
一度書いたのになんかチェックのページが表示されて、戻ってもう一度送信しろと書いてあったからその通りしたら消えた…

>>155
しかし、ドキュメント少なすぎますよね?
古いバージョンのものとか混在しているし…

今は大分慣れてきたので、普通のことをやろうとするのは大分楽にできるようになりましたが、
ちょっと凝ったことをやろうとすると、簡単にはまる。

ちなみに140さんは、自前のテンプレートを作成してしようしていますか?
あと、今はeacceleratorのある環境で実行しているのですが、ない場合って結構重たいのでしょうか?
今作っているのが階層が結構深くなるんですが、深くなるほど処理は重くなりますよね?

157 名前:140 mailto:sage [2008/04/25(金) 00:32:52 ID:???]
>>156
ドキュメント無い分はコード読んで何とかしたかな。3年前はドキュメント皆無だったし。
当時はプログラムあまりしらなかったから大変だったけど勉強になった。
>>138はオレが昔書き散らしたものとかどっかで読んでるかも。

基本的にEthnaでやろうとしてできなかったことは無い。
ActionChainと呼ばれるらしきものも強引気味にやったし。
まぁ、たいしたものを作ってないっていうのもあるけど、1〜2人ならEthnaで十分。

>ちなみに140さんは、自前のテンプレートを作成してしようしていますか?
自前のテンプレートって、Smarty以外でってこと?Smarty慣れちゃって、それしか使ってないなー。
Smarty重いっていうけど、早く作れるし。
eAccは、普通レンサバに無いので使ったこと無いです。
サイト立ち上げ当初は速くよりも早く作れることなんで。。。

都内なら会社来てもらえば色々説明もできます。
ステ fromdustman@imap.cc



158 名前:nobodyさん mailto:sage [2008/04/25(金) 13:09:06 ID:???]
都内ならPHP勉強会でたまに取りあげたりしてるんで是非。

>あと、今はeacceleratorのある環境で実行しているのですが、ない場合って結構重たいのでしょうか?
>今作っているのが階層が結構深くなるんですが、深くなるほど処理は重くなりますよね?

階層はたぶん関係ないかと。eAあった方が早いのは間違いないですがよほどPVがない限り気になりません。
たいていフレークワーク本体よりは時間のかかるロジックがボトルネックになります。

159 名前:140 mailto:sage [2008/04/26(土) 00:21:00 ID:???]
>>158
んー、PHP勉強会は昔出たことあるけどあんまり勉強会で話すことも無いかと思う。
別に目新しいことしてるわけじゃないし、良い意味で枯れかけの技術だと思ってるんで。

なんで、できるとしたら、ここでやってるような
「これ、わかんないんだけど、どうしたらいい?」
「こんな感じでEthnaコード書いてるけどどう?」
ってのに対話するぐらいで。

それはそれで楽しいけど、それってPHP勉強会の雰囲気じゃない気がするんだよね。

160 名前:nobodyさん [2008/05/02(金) 02:58:13 ID:DNyHDGY2]
もうすぐ 2.3.5 が出るみたいだね。
ここ3週間でコミッタが復活したらしい。

svn.sourceforge.jp/cgi-bin/viewcvs.cgi/ethna/trunk/CHANGES?rev=518&root=ethna&view=markup

161 名前:nobodyさん mailto:sage [2008/05/03(土) 10:18:16 ID:???]
一週間いじってみたがこんな致命的バグの潜んだFWは使う気になれん

162 名前:nobodyさん mailto:sage [2008/05/03(土) 16:28:30 ID:???]
>>161
具体的に書いた方がみんな幸せになれるから
具体的にお願いします。

163 名前:nobodyさん mailto:sage [2008/05/03(土) 16:43:32 ID:???]
志村ーコピペコピペ



164 名前:nobodyさん mailto:sage [2008/05/03(土) 23:30:29 ID:???]
>>161
pc11.2ch.net/test/read.cgi/php/1177683436/276
276 名前:nobodyさん[sage] 投稿日:2008/04/30(水) 12:41:32 ID:???
一週間いじってみたがこんな致命的バグの潜んだFWは使う気になれん

pc11.2ch.net/test/read.cgi/php/1205475360/765
765 名前:nobodyさん[sage] 投稿日:2008/04/29(火) 00:30:20 ID:???
一週間いじってみたがこんな致命的バグの潜んだFWは使う気になれん


165 名前:nobodyさん [2008/05/04(日) 14:07:09 ID:NE4g0gE+]
[project]-ini.php
で通常DB使う場合に設定する
"dsn"=>"mysql://mysql_user:mysql_userpass@mysql_server/mysql_db",
といった記述なんですが、
mysql_server部分 を動的に変えたい場合、何か良い方法はないでしょうか。
[project]-ini.php 内では
$this->aff->get()とか使用できないので。。。


166 名前:nobodyさん mailto:sage [2008/05/07(水) 09:06:27 ID:???]
>>165
それぞれのdsnにキーを割り付けて、getDBで選択するという手はだめかな

ethna.jp/ethna-document-dev_guide-db.html#zc5316fe

167 名前:nobodyさん mailto:sage [2008/05/08(木) 18:10:16 ID:???]
2.3.5 リリースsage

168 名前:nobodyさん [2008/05/09(金) 20:41:27 ID:lfzI+vCi]
validate について質問

1.inputフォーム
2.validate->確認画面
3.DB更新&完了画面

という遷移をしたい場合 validateって3でも必要ですか?
2でvalidateが通った後無理やり GET引数に?varname=XXXX...略、とか
したら、validateが通っていないデータで更新できてしまいますよね?

あと、formでpostを繰り返して遷移していく場合、もどると期限切れに
なりますよね?これって 302とかを使って解決すると思いますが、
Ethna的にはどのように書くのでしょうか?

1. GET なにがしかの form
2. POST confirm [validate] => 302 confirmed
3. GET confirmed
4. POST do => 302 done
5. GET done

169 名前:nobodyさん mailto:sage [2008/05/10(土) 01:48:48 ID:???]
>>168
ヒント:
class DB更新&完了画面Action extends 確認画面Action
{
  function perform()
  {
     DB更新
     return 完了画面のview
   }
}

170 名前:nobodyさん mailto:sage [2008/05/10(土) 12:38:54 ID:???]
>>168
トランザクションチェックやら、CSRFチェックやら、
validate済みデータをセッションに保存しておくやらすればいいんじゃね?

171 名前:nobodyさん [2008/05/15(木) 18:42:33 ID:luXnYgdJ]
>>165
ethna.jp/index.php?cmd=read&page=ethna-document-dev_guide-db

にある、「複数のDBオブジェクトを扱う場合」を参考にしてください。

172 名前:nobodyさん mailto:sage [2008/05/15(木) 18:46:19 ID:???]
>>168
3でもvalidateは必要です。
複数の画面を遷移しながら移動する場合はセッションに保存するのがてっとりばやいでしょう。

173 名前:nobodyさん mailto:sage [2008/05/16(金) 09:22:57 ID:???]
戦後教育は文部省と日教組の不毛のイデオロギー対立により本来の教育を蔑ろにし、主役である子供達を放置してきた。最初にその犠牲となっ
たのがいわゆる「団塊チルドレン」と呼ばれる世代である。彼らは歪んだ「権利・自由・平等」を教えられ、「責任・義務」を教えられないま
まに育った。日教組は彼らに経済と言う物差ししか与える事ができず、信念・哲学・自尊心という価値からは程遠い「金と物」にしか価値を見
出せない貧しい精神を育んだのだ。この事は「失われた十年」と呼ばれる90年代に於ける彼らの生き様に大きく影響した。
子供は幼児期に於いて父性と母性の対比の中で社会性を獲得する。「亭主元気で留守が良い」と言うコピーがはやったが、父性不在の家庭はや
がて「団塊チルドレン」の社会性の無さの原因となった。当時オバタリアンと呼ばれた世代は、戦後処理もろくに済んでいないのに平気で海外
へ出かけ、金に飽かせてブランド商品を買い漁り、傲慢さを世界中にまき散らした。彼らの世代に特徴的であるこの品性・品行の悪さは、後の
世代のライフ・スタイルにまで影響を与えた。それ以上に、欧米諸国が未だに日本人を蔑視し、アジア諸国が不信感を持ち続けている事への鈍
感は不幸でさえある。団塊の世代が戦後の営みの中で経済力に見合う人生観や価値観、広義の品性・品行やモラルを獲得していれば日本社会は
ここまで歪まなかっただろう。
90年代は「失われた十年」と呼ばれている。経済と言う物差ししか持たなかった我々は、旧来の発想で経済的な豊かさを追求し続けたが故にバ
ブルの崩壊をもたらした。その時不幸だったのは「我々は何処へ行くのか?」と言う根源的な迷いに気かなかった事だ。この事が90年代を無為
に浪費した最大の原因である。団塊の世代は欧米を追う間は素晴らしい能力を発揮したが、追いついた後のビジョンを描く想像力が欠如してい
た。彼らの責任では無い。社会が彼らにその様な能力を要求しなかったのだ。村上龍の「あの金で何が買えたか」が売れたと聞くが、悲しいの
は未だにその程度の次元でしかバブルを検証できないメンタリティーの低さである。検証すべきは「何故我々が貧しい価値観しか持ち得なかっ
たのか」と言う事である筈だ。まさしく教育の問題である。冒頭で述べた様に信念・哲学・自尊心を育む努力を怠らなければ、もっと違った社
会があった筈である。



174 名前:nobodyさん [2008/05/18(日) 05:34:12 ID:5L4/s+Ln]
Ethnaの中の人、全然やる気無い感じが伝わってくる

175 名前:nobodyさん mailto:sage [2008/05/18(日) 13:33:05 ID:???]
>>174
どのへん?

176 名前:nobodyさん mailto:sage [2008/05/18(日) 17:29:54 ID:???]
DBまわりがよくなればいいのにねえ

177 名前:nobodyさん mailto:sage [2008/05/18(日) 22:38:14 ID:???]
CakePHPに乗り換えたけど、まだちょっと期待してるよ

178 名前:nobodyさん [2008/05/26(月) 12:53:26 ID:eXimI0Ql]
Ethna_ActionForm::handleError()
ってオーバーライドできますか?
なんか {APPID}_ActionFormに書いても出来ないんですけど(´;ω;`)

179 名前:nobodyさん mailto:sage [2008/05/28(水) 01:02:10 ID:???]
ちゃんと{APPID}_ActionFormを継承してるか?

180 名前:178 [2008/05/30(金) 10:07:06 ID:mNLSpKje]
>>179
どうもです。

$use_validator_plugin に falseを設定したら動きました。
が、pluginが使えないと色々面倒ですね。

エラーメッセージを全体的に変更したくて、Ethna本体を変更しないように
ってなると、やはり Pluginを自分で書くなりするしかないですか?

たとえば未入力のエラーは標準が
{form}を入力してください
ですが
{form}を入力してくださいね♪
にしたい場合など、みなさんはどうしているんでしょうか?

$form_template とか使うんでしょうか?

181 名前:nobodyさん mailto:sage [2008/05/30(金) 12:00:15 ID:???]
$form => array(
'required_error' => '{form}を入力してくださいね♪ '

182 名前:nobodyさん mailto:sage [2008/06/02(月) 10:16:58 ID:???]
ethnaのサイトウィルスはってあったから注意
iframeのやつね
誰か連絡してやってくれ・・・

183 名前:nobodyさん [2008/06/02(月) 16:14:36 ID:aKm7Z/AW]
ethnaのサイト落ちてますか?



184 名前:nobodyさん mailto:sage [2008/06/02(月) 19:44:54 ID:???]
>>183
ethena.jpが乗っ取られてたらしい。
現在は閉鎖中。


185 名前:nobodyさん mailto:sage [2008/06/02(月) 20:09:21 ID:???]
そして復活した模様

186 名前:nobodyさん mailto:sage [2008/06/02(月) 22:36:44 ID:???]
ethna.jp/ethna-news.html#q6a79399
リリース出たね

187 名前:nobodyさん mailto:sage [2008/06/03(火) 04:54:20 ID:???]
さくらインターネットのルータがウイルスに感染してたってこと?
その方が怖いんだが

188 名前:nobodyさん mailto:sage [2008/06/03(火) 05:15:50 ID:???]
さくらスレ見たらやっぱりさくらが問題みたいね
こえーな

189 名前:nobodyさん [2008/06/03(火) 06:03:26 ID:GVCDkPaZ]
ってか大問題なのに騒がれなさすぎだろw
上流でクラックされてたらどうしようもない
サーバ単位の感染の比じゃねーぞ

190 名前:nobodyさん mailto:sage [2008/06/03(火) 06:30:55 ID:???]
memo.st.ryukoku.ac.jp/archive/200806.month/9458.html

ルータと同じIPを名乗るマシンがいたんだってよ。ひどいもんだな。

191 名前:nobodyさん mailto:sage [2008/06/03(火) 09:34:43 ID:???]
そんなに簡単に乗っ取れるインターネットっていったい

192 名前:nobodyさん [2008/06/03(火) 17:20:00 ID:khCiq63d]
簡単に言うけど、ssl化すればいいんじゃね?


ところで、Ethnaで アクションからアクションを呼びたい場合って同かけばいいのでしょうか?
今作っているのがバッチ処理の関係なんですけど、バッチ処理をコントロールする
アクションがいて、条件によってサブの処理アクションを呼び出したいんですけど...

/batch.php <= 一定時間ごとに起動
/batch/proc1 <= サブアクション
/batch/proc2   〃
/batch/proc3   〃

あと、2.3.5がリリースされましたが、2.3.2からはそのままアップデート
して何か問題ありますか?

193 名前:nobodyさん mailto:sage [2008/06/03(火) 19:46:36 ID:???]
>>192
確か公式にアクションチェインの方法かいてあったはず




194 名前:nobodyさん [2008/06/03(火) 20:13:41 ID:khCiq63d]
>>193
どうもです。
マニュアル見ててわかりました。

$this->backend->perform($action_name);
を perform()に書いてあげればいいみたいですね。


195 名前:nobodyさん mailto:sage [2008/06/04(水) 03:06:30 ID:???]
>>192
そのままアップデートして問題ないよ。大きくは変わってないので。

196 名前:nobodyさん [2008/06/10(火) 10:19:27 ID:w4tQWM9Z]
$this->session->start() のあとに
$this->session->isStart() してもtrueが返らないのは仕様ですか?
$this->session->isStart(true)とすれば返るんですが...

Ethna_Session::start()のなかで $this->anonymousに代入していないのは
わざとですか?

$_SESSION['__anonymous__'] と Ethna_Session::anonymouse には何か使い
分けている理由があるのですか?



197 名前:nobodyさん mailto:sage [2008/06/11(水) 08:10:19 ID:???]
$this->session->start()じゃなくてsession_start()してんじゃないの?
auto_startとか。

あと匿名と通常のセッションを同時に使い分けることはできない。

気にくわないならEthna_Sessionを継承しる。


198 名前:JK [2008/06/11(水) 08:31:19 ID:xujtuY+c]
>>197
ソース見て見れ!
Ethna_Session::start()
で $anonymousに代入していないから
restoreが呼ばれてからじゃないと
isAnonymous() で取得できないから、isStart()が正常な値を返せない

これは仕様なのか?
ログイン処理で匿名から、通常のセッションに切り替える処理を入れたんだが
ログインチェック処理が何故かうまく通らないから調べたら、そうなっていた

start()
ttp://ethna.jp/doc/__filesource/fsource_Ethna__classEthna_Session.php.html#a142
isStart()
ttp://ethna.jp/doc/__filesource/fsource_Ethna__classEthna_Session.php.html#a276
isAnonymous()
ttp://ethna.jp/doc/__filesource/fsource_Ethna__classEthna_Session.php.html#a295

199 名前:nobodyさん mailto:sage [2008/06/11(水) 15:20:49 ID:???]
>>198
素直にMLに投げてみたら?

200 名前:nobodyさん mailto:sage [2008/06/11(水) 20:46:44 ID:???]
>>198
だから「同時に使い分けることはできない」んだってば。
これが仕様なのかバグなのかは知らないけど。


201 名前:JK [2008/06/11(水) 21:08:49 ID:xujtuY+c]
>>200
だから、切り替えたいんだってば。
というより。
Anonymous関係なく、 session->start()した直後 isStart()よんでみ?


202 名前:nobodyさん mailto:sage [2008/06/11(水) 21:59:31 ID:???]
start前はbool(false)、
start後はbool(true)になるけど?


203 名前:nobodyさん mailto:sage [2008/06/11(水) 22:07:52 ID:???]
「切り替え」も「同時に使い分ける」と同義。
匿名セッションをdestroy()してから、そのまま通常セッションをstart()してもだめってこと。





204 名前:JK [2008/06/11(水) 23:40:12 ID:xujtuY+c]
>>203
なるほど、そういう説明なら納得。

ログイン前の情報を匿名セッションで保存していて、ログイン後にそれらの
情報を扱いたい場合ってどうしているんですか?

Ethna_Sessionを new して $this->session に渡しちゃうとかですか?

205 名前:nobodyさん mailto:sage [2008/06/15(日) 01:00:02 ID:???]
わざわざ匿名セッションを使う意味がわからんのだけど。
「匿名セッション」=「Ethnaアプリではないアプリが開始したセッションを使うため」かと。


206 名前:JK [2008/06/15(日) 01:48:12 ID:vmTqGR6A]
>>205
実はよくわかってないのです。
匿名=アプリには非ログインだけど、セッションを使いたい
非匿名=アプリにログイン状態
かな〜と、勝手に思っていました。

たとえばログインのアクションを起こす直前の情報を匿名状態で持っていて
ログインが必要なアクションを起こした場合にログイン画面へジャンプ。
ログイン処理が正常に済んだら、保存していた情報でページにジャンプしたり
フォームに入力したりする。

一応ロールっぽい概念は持っているんだけど、一番簡単なログインチェックは
isStart() を呼ぶだけで出来るから便利だなぁなどと思っていたけど、
ちょっと違うのかな?

207 名前:nobodyさん mailto:sage [2008/06/15(日) 11:45:46 ID:???]
それならログインしていようといまいと普通にセッションを使うべし。
ログインしたらセッションの中にフラグを立てる。
あとはisStart()じゃなくてそのフラグを確認するだけ。

208 名前:JK [2008/06/15(日) 17:30:32 ID:vmTqGR6A]
なるほど、ありがとうございます。

えーと、こうなったいきさつを少しだけ、ethnaのサイトに isStart()で
ログインをチェックしているサンプルがあってセッションスタート=ログイン
状態というような感じのサンプルでした。

それでそれを元に開発を進めていったんですが、非ログイン状態でもセッション
を使って何かしたいなぁ。となったときにセッションを明示的に開始していないと
セッションが使えないという罠にはまり、しばらく悩む。
で、ソースを眺めていたら、匿名というのを見つけて、匿名時はisStart()が
falseを返すという性質があるなぁそれなら。
となったわけです。

普通に考えたら、セッションにフラグを持つのが正解ですね。
事実FWを使わないときはそうやって書いていたし...

逆切れすみませんでした。

PHP全般とおしていえることですが、無駄にセッションを開始したくない場合
ってどうやるのが正解ですか?

sessionのauto_startを無効にして
if (!empty($_COOKIE['SESSID'])){
session_id($_COOKIE['SESSID']);
session_start();
}
というような感じでしょうか?

209 名前:nobodyさん [2008/06/24(火) 20:05:23 ID:et7OSP74]
>>208
たぶんそれで問題なあいと思うよ。
まぁそんなに神経質にならなくてもGCがうまいことやってくれます。


ところで、過疎化しているから回答がつかないかもしれないけど質問。
HiddenVarsを使うという記事を見つけたのですが、これって
1.input 2.check 3.do という 3phaseで処理する場合 2で validate
しても 2と3の間でデータを書き換えできますよね?
3の直前に validateを入れたとしても書き換えたデータがそれなりの
ものであれば、2でチェックした内容と違うもので更新できますね?
さらにいうろ 3のアクションのみでデータを登録できちゃうから、
不正登録とか連投ができますよね?
これを防ぐにはセッションやチェックファイル、DBなどを使わないと
だめですよね?
何かいいアイディアありますか?

210 名前:nobodyさん mailto:sage [2008/06/25(水) 07:08:45 ID:???]
>>209
>>170

211 名前:nobodyさん [2008/07/01(火) 08:37:05 ID:2M+ISpJV]
すんません、たとえば複数のテーブルを扱うと時って アクションクラスには
どのように書けばいいのでしょうか?

例えば会員情報に会員状態を表す status(仮登録、本登録、退会、削除)があり、
付随するデータにそのデータの状態をあらわす status(下書き、公開、閲覧停止、削除)
があったりします。


212 名前:nobodyさん mailto:sage [2008/07/01(火) 11:34:32 ID:???]
このスレにレスが付くのは不思議だよな・・・。 

213 名前:nobodyさん [2008/07/03(木) 08:29:19 ID:cyN9Rfkc]
>>212
おまいの自作自演だったりして、このレスもw



214 名前:nobodyさん [2008/07/28(月) 10:13:22 ID:YSIM2iDa]
過疎化しているようなので、レスがつくか不安ですが質問です。

$this->backend->perform() でサブアクションを実行したいのですが、
$form要素は呼び出し側のものしか反映されていないようです。

サブアクションのアクションクラスで$form要素を定義したいのですが
どのように書けばいいのでしょうか?

215 名前:214 [2008/07/28(月) 10:25:20 ID:YSIM2iDa]
間違えた

>サブアクションのアクションクラスで$form要素を定義したいのですが
>どのように書けばいいのでしょうか?

サブアクションのアクションフォームクラスで$form要素を定義したいのですが
どのように書けばいいのでしょうか?

です。
よろしくお願いいたします。

216 名前:nobodyさん mailto:sage [2008/07/28(月) 14:37:54 ID:???]
質疑は社内ですればいいのに・・・。

217 名前:nobodyさん mailto:sage [2008/07/28(月) 21:06:11 ID:???]
>>215
そもそもチミは$formの定義をなんだと思ってるのかね・・・。
ActionClassと一対一なんだよ。
サブアクションとか勝手に言っても、それは勝手に言ってるだけだから
自分でちゃんとActionformもnewして_setFormDefしたまえ。

218 名前:nobodyさん mailto:sage [2008/10/01(水) 11:11:33 ID:???]
Ethnaのサイトに繋がりません。

219 名前:nobodyさん mailto:sage [2008/10/01(水) 22:42:24 ID:???]
ethnaみたいなゴミフレームワークよく使えるな

220 名前:nobodyさん mailto:sage [2008/10/14(火) 23:49:51 ID:???]
え?砂フレームワークだよ

221 名前:nobodyさん mailto:sage [2008/10/18(土) 13:20:02 ID:???]
>>219
なにつかってる?
最近乗り換えけんとうちう

222 名前:nobodyさん mailto:sage [2008/12/15(月) 15:11:08 ID:???]
RSSパーサーってみなさんはpear使ってますか?

223 名前:nobodyさん [2009/01/12(月) 20:55:45 ID:ZFy7iIA6]
GREEの腐ったCMのおかげで
Ethnaも腐ったフレームワークと見られるようになりました




224 名前:nobodyさん [2009/03/01(日) 19:57:05 ID:Hv9B/Cgp]
labs.gree.jp/Top/Document/20060707.html#d1ddfba7

手始めに↑を動かしてみたんですが、
エラーメッセージが2重に出てしまっています。

例えば、全ての項目を空にして送信ボタンを押した場合に
以下のようなエラーメッセージが表示されてしまいます。

* メールアドレス が入力されていません
* パスワード が入力されていません
* パスワード(確認) が入力されていません
* メールアドレス が入力されていません
* パスワード が入力されていません
* パスワード(確認) が入力されていません

2重のエラーメッセージが表示されないようにするには、
$errorsを自前で処理にしないといけないのでしょうか?

環境:
Ethna 2.5.0-preview3

225 名前:224 mailto:sage [2009/03/01(日) 22:40:13 ID:???]
すみません、こちらのミスでした。

prepare()メソッドにvar_dump($this->af->validate());を書いていた為に
エラーが2重で出力されていたようです。

function prepare()
{
  if ($this->af->validate() > 0) {
    var_dump($this->af->validate());
    return 'index';
  }
  return null;
}

var_dump($this->af->validate());を削除したら2重で表示することはなくなりました。

226 名前:nobodyさん mailto:sage [2009/07/30(木) 12:43:43 ID:???]
ethnaでサイト作ってあるんですけど、メンテのときだけ
どのページにアクセスしてもメンテ中画面に飛ばす方法ないですか?

227 名前:nobodyさん [2009/07/30(木) 12:48:49 ID:XFFHqckQ]
あげ!
・・・って前の書き込み5ヶ月前かよ・・・。

228 名前:nobodyさん mailto:sage [2009/07/30(木) 22:16:06 ID:???]
>>226
決まったActionしかしないってことにさせればいい。

エントリポイントを1つにルーティングしてるなら、そのエントリポイントの
main()の第2引数をarray('undermaintainance')にしちゃえば。

たくさんエントリポイントがあるなら、Controllerの
getActionFormNameをoverrideして、つねに'undermaintainace'の
Stringを返すようにすれば良いんじゃない?



229 名前:nobodyさん mailto:sage [2009/07/31(金) 09:14:02 ID:???]
Webサーバの方でリダイレクト設定するとかでもいいんでない?

Apacheなら.htaccess一個書けば済む

230 名前:nobodyさん mailto:sage [2009/07/31(金) 09:29:00 ID:???]
>>228
どうもです。
やってみます〜

231 名前:nobodyさん [2009/08/25(火) 11:28:16 ID:X6yGpm6m]
誰かまだ使ってるの?
これ使って作られたオープンソースものがあれば教えて欲しいと思ったんだけど

232 名前:nobodyさん [2009/08/26(水) 16:38:32 ID:UZkILcW9]
誰か見てますか…此処。
質問とかしていいのかな?

<select name="aaa" id="aaa" size="7" multiple class="bbb">
 {foreach from=$app.hoge item=item}
  <option value="{$item.hoge}">{$item.fuga}</option>
 {/foreach}
</select>
と、tplで書いています。
ここに出されたデータをアクションの方で
$this->af->get('????');
って風に取り出したいんです。

やってみた事↓

[action側]
'aaa'=>array(
 'type'=>array(VAR_TYPE_INT),
 'name'=>'ほげ',
),

[tpl側]
上のname="aaa"をname="aaa[]"に

[action側]
$this->af->get('aaa');

結果はNULLでした…。
<input type=~.....
のつもりでやってたんですけど…どうにかしてselectに入ったデータって取り出せないですかね。

233 名前:nobodyさん [2009/08/31(月) 14:48:44 ID:ueVwiefa]
とれるが、ちゃんと調べて説明する暇がないのでがんばってくれ
そもそもとれないとプログラムとしておかしいだろ?



234 名前:232 [2009/09/03(木) 14:48:01 ID:42dHYBvA]
ありがと。
別のややこしい方法で取ったよ。

235 名前:nobodyさん [2009/09/29(火) 11:04:09 ID:0+eTXppc]
actionフォームの方からテンプレートのラジオボタンとか…弄れないかなあ…。
検索前の画面でラジオボタン1、2とテキストボックスがあって
2を選んだ場合はテキストボックスが使えなくなる(disables)
検索する前に、2のラジオボタンが選択されてたら、検索後の画面で2のラジオボタンが選択されたままになってて、
テキストボックスは使えないまま表示される。
って事がしたいんですけどね。

現在は最初の読み込みでラジオボタンどっちも選択されてないし、検索後もどっちからも外れ、
テキストボックスの使用不可もはずれちゃう状態…。

1のラジオボタンに<input.......checked = true />って入れてみたら
最初の読み込みではラジオボタン1にチェック入るようになったのは良いんだけど、
2を選んで検索した後も1が選択されてるんですよね…。

誰か解決策知ってる方いらっしゃったらよろしくお願いします。

236 名前:235 [2009/09/29(火) 11:11:57 ID:0+eTXppc]
すみません。ラジオボタンの問題は自己解決しました。

237 名前:235 [2009/09/29(火) 11:12:36 ID:0+eTXppc]
すみません。ラジオボタンの問題は自己解決しました。

238 名前:235 [2009/09/29(火) 11:13:21 ID:0+eTXppc]
書き込めない…?
ラジオボタンの問題は自己解決しました。

239 名前:nobodyさん mailto:sage [2009/09/29(火) 23:19:45 ID:???]
>>235
うーん、ActionFormからHTMLにdisabledを入れるのって
今時のやり方じゃない感じがする。

disabledってあくまで補助だから、補助は補助らしくjavascriptで後付け設定かなぁ。
しかも、radioとtextの連動だからなおさらその感じがする。

自分だったら、適当にradioとtextにid振って
$(function(){});

Event.observe(window, 'load', function(){});
するかなぁ。


240 名前:nobodyさん mailto:sage [2009/10/02(金) 03:07:29 ID:???]
これ面白そうだな。

いまやってるDrupalが落ち着いたら手を出してみたい。
CMSはページ管理には便利だけど、ハマると結構てこずるや。

ZFWとどっちがMVCの分け方判りやすいかな

241 名前:nobodyさん mailto:sage [2009/10/06(火) 02:01:12 ID:???]
>>240
Zend

242 名前:nobodyさん [2009/10/08(木) 15:15:39 ID:2JJQdndq]
Fatal error: Call to a member function getAll() on a non-object in

…というエラーが出ます。
getAllを用意した__DB_PEAR.phpもlibに入れてControllerからincludeしてるのに…。

Ethnaは最新バージョンです。

何故飛べないのか原因がさっぱりです。

243 名前:242 [2009/10/08(木) 18:57:42 ID:2JJQdndq]
MySQLの設定で何か問題があったようです。
詳しくは分かりません。



244 名前:nobodyさん [2009/10/19(月) 23:28:51 ID:/Zspq1xO]
ethnaにPEAR::PAGERのようなページング用のメソッドは
用意してありますでしょうか?
ご存知の方が居られましたらご教授よろしくお願いいたします。



245 名前:nobodyさん mailto:sage [2009/10/20(火) 10:02:54 ID:???]

つttp://ethna.jp/
Ethna > ドキュメント > 開発マニュアル > デモ > ページャを作成する






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧](*・∀・)<93KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef