- 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/
- 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 > ドキュメント > 開発マニュアル > デモ > ページャを作成する
- 246 名前:nobodyさん [2009/10/23(金) 18:04:21 ID:7dG7Qup9]
- hoge.com/ethna/?hoge=1&peko=1
というURLがあったとして、hogeとpekoが入れ替わることもあるとするとき、 1つ目の引数がhogeであるかpekoであるかを知る方法ってありますか? $this->af->get(name[0]) とかで、hogeって入ってるとか。 今のところpathinfoあたりから自分で分解するしか思いつかないです・・・
- 247 名前:nobodyさん mailto:sage [2009/10/23(金) 22:38:55 ID:???]
- >>246
$_SERVER['QUERY_STRING']からとるしかねーじゃん。
- 248 名前:nobodyさん [2009/10/26(月) 15:52:54 ID:jayyJSrP]
- >247
やっぱそうなりますか。 ありがとうございますた
- 249 名前:nobodyさん mailto:sage [2009/10/27(火) 21:30:22 ID:???]
- アクションloginのフォーム表示画面でsubmitするとURLがindex.phpになってしまうんですけど
これを同じloginにするにはどうしたらよいでしょうか?エントリはindex.phpです。
- 250 名前:nobodyさん mailto:sage [2009/10/28(水) 00:20:21 ID:???]
- >>249
hogehoge.tpl <form action="login.php" method="post"> <input type=hidden value=1 name=action_login_do> <input name=id> <input name=pass> <input type=submit> </form> login.php <?php include_once Hoge_Controller.php Hoge_Controller::main('Hoge_Controller', array('login', 'login_*'), 'login');
- 251 名前:nobodyさん mailto:sage [2009/11/04(水) 10:10:05 ID:???]
- >>250
ありがとう
- 252 名前:nobodyさん mailto:sage [2009/11/10(火) 11:26:10 ID:???]
- クエリエラーが発生したとき、画面上に
***[508](ERR): Ethna_DB_PEAR._query(\class\DB\Ethna_DB_PEAR.php:306): Query Error SQL[〜〜] みたいな感じで表示されるんだが、これを止める方法ってない? 一応、ロジックで $res = $db->query($sql); if (Ethna::isError($res)) { return Ethna::raiseNotice('登録エラー',E_DATA_REGIST); } みたいな感じにはしてるんだけど・・・・。
- 253 名前:nobodyさん [2009/11/25(水) 12:11:40 ID:KpnnUhSV]
- EthnaってもうちゃんとO/Rマッピング対応してんの?
joinとかサブクエリーとか、Postgresとか使える?
- 254 名前:nobodyさん [2009/12/08(火) 08:35:32 ID:YO3TGVaP]
- >>253
使えるよ アダルトサイトでもEthnaの導入が増えてる yourvideo.jp/?action_rank=true
- 255 名前:nobodyさん mailto:sage [2010/01/28(木) 12:15:27 ID:???]
- アダルトサイトなんてXOOPSか下手するとブログ程度かと思ってたのに。
進んでんな。
- 256 名前:nobodyさん [2010/02/10(水) 11:31:46 ID:SPzWL0O/]
- {form_input name="hoge"}
の形でcheckedフラグ入れれる方法知りませんか? 最初からchecked=trueにしておきたいのですけど…。 型はチェックボックスでoptionに連想配列入れてるので<input...の形にはしたくないのです。 actionで$formに何か指定できるとか、{form_input...に何か付け足すとか ご存知の方いらっしゃいましたらお願いします。
- 257 名前:nobodyさん mailto:sage [2010/02/10(水) 11:41:00 ID:???]
- >>252
if (Ethna::isError($res))を何処に書いてるのか分からんが Managerに書いてるんだったら処理全体をtryで囲って、 エラーの場合はcatchにthrowしてfalseを返す仕様にしたらどうだろう 呼び出し元の方で$this->ae->addObject();を使う
- 258 名前:256 [2010/02/10(水) 17:21:50 ID:SPzWL0O/]
- 自己解決しました。
$this->af->set('hoge', "valueの値"); とすることによって、指定の箇所へチェックを入れれました。
|

|