1 名前:nobodyさん [2005/08/03(水) 21:00:39 ID:TuHx69hT] 国産フレームワーク、Ethnaでいい意味で手抜きなプログラミングライフを。 Ethna -PHPウェブアプリケーションフレームワーク- ethna.jp/ SourceForge.jp: Project Info - Ethna sourceforge.jp/projects/ethna/
136 名前:130 mailto:sage [2006/02/04(土) 14:25:12 ID:???] >>135 pear install prdownloads.sourceforge.jp/ethna/18710/Ethna-0.2.0.tar.gz でインストールできることを他のマシンで確認しました。
137 名前:nobodyさん mailto:sage [2006/02/12(日) 00:59:00 ID:???] AppObjectは面倒くさくて使う気になれないんですが、使うとどういう点で幸せになれますか? いまいちピンときません。
138 名前:nobodyさん [2006/02/12(日) 16:10:39 ID:HHAh2SKQ] >>137 テーブルを永続オブジェクトとして扱える。 ↓ SQLを使わずに永続オブジェクトを通してテーブルにアクセスできる。 ↓ DB非依存のコードになる。 ↓ ちょっと幸せ
139 名前:nobodyさん mailto:sage [2006/02/12(日) 21:05:40 ID:???] >>138 AppObject自体が mysql にべっとりだけど?
140 名前:nobodyさん mailto:sage [2006/02/12(日) 22:52:49 ID:???] >>139 まぁ、AppObjectを使うのはその考え方(O/Rマパ)を採用してるみたいなところあるから。 自分の使うRDBMSに合うように書き換えれば済む話だからあまりMySQLべっとりは本質的ではないと思う。
141 名前:nobodyさん mailto:sage [2006/02/13(月) 07:20:58 ID:???] >138 一晩、AppObject使ってみておっしゃることが少し理解できました。 というかオブジェクト指向がなんで必要なのか、Ethnaのおかげでうっすらわかってきました。 あと、これ便利でした。 [AppObjectを生成するコマンドラインツール] ethna.jp/pipermail/users/2006-January/000165.html
142 名前:nobodyさん [2006/02/15(水) 23:25:12 ID:ysMvv2cd] サンプルみたいなものは無いの? 実際にEthna使ってるアプリのソース見てみたいんだけど。
143 名前:nobodyさん mailto:sage [2006/02/16(木) 02:24:28 ID:???] 僕も色々見てみたいんだが、Ethna使ってるのってあんまりサンプル出回ってないよな。 公式にあるのと、MLに1,2個上がってるからそれ見るぐらいしか。
144 名前:nobodyさん mailto:sage [2006/02/16(木) 14:55:18 ID:???] Ethnaよさげなんだけど ・moduleがない ・compositeViewがない これが問題
145 名前:nobodyさん mailto:sage [2006/02/16(木) 21:04:10 ID:???] >>144 moduleとcompositeViewってなに? 何かいいことあるの? Ethnaしか知らんので、教えてくれればうれしい。
146 名前:nobodyさん mailto:sage [2006/02/16(木) 21:55:18 ID:???] moduleはAction-View-Templateのコンテナ。 クラスが増えすぎた時にごちゃごちゃにならない。 compositeViewはCompositeパターンを適用したView。 複数のAction-Viewを組み合わせて 一枚の画を作る時にとっても便利 from Mojavi3
147 名前:nobodyさん mailto:sage [2006/02/17(金) 11:34:05 ID:???] ActionFormにて あるフォームに値が入ると周辺のフォームもrequiredになるフォームグループ。 それぞれのフォーム定義に 'group' => 'hoge', ってしとくと _validateする前にざざっとissetで値が入ってるか調べてrequiredしたりしなかったり。 type=radio,checkbox,select等に「その他」の項目を作ってそれを選んだ時だけ すぐ下のtype=textに書かせるような疑似コンボボックス。 'combo' => array( '8' => 'other' ), ってしとくと value="8" をPOSTすっと <input type="text" name="other">がrequiredされるという。微妙。 需要ある?
148 名前:nobodyさん mailto:sage [2006/02/17(金) 13:25:02 ID:???] あります! 是非アップお願いしまっす。 コードを気軽に投稿できる場所があるといいですねぇ。
149 名前:nobodyさん [2006/02/17(金) 15:38:48 ID:pZsluFn9] >>144 そうかモジュール構造にしたいか、、 diary.eth.jp/?date=20060201 にある Ethna Viewコンポーネント(from GREE by 小泉さん) というのがcompositeViewになる。のでもうちょっとまってて。
150 名前:nobodyさん mailto:sage [2006/02/17(金) 16:50:25 ID:???] >>149 関係者 or 藤本神ご本人? 期待してます。wktk
151 名前:nobodyさん mailto:sage [2006/02/17(金) 20:01:19 ID:???] >149 は モジュール構造というか、どっちかというと >144が言うところの compositeView の事だと思っていたのですが。。。
152 名前:nobodyさん mailto:sage [2006/02/17(金) 21:29:24 ID:???] >>150 そういういらん確認はしないほうがいいんじゃね? 関係ない人が参加しようとしてるときにテンション下がりそうだし。 期待してるだけでいいじゃん
153 名前:nobodyさん mailto:sage [2006/02/18(土) 00:17:12 ID:???] >>151 モジュールは保留だけどCompositeViewは作り中ってことでは? >>152 いや俺自身何の面識もない部外者なんだけど… なんでテンションが下がるの?
154 名前:nobodyさん mailto:sage [2006/02/18(土) 18:55:13 ID:???] セイセイセイ
155 名前:nobodyさん mailto:sage [2006/02/23(木) 21:50:51 ID:???] Ethnaに関係なんだけどさ。 [ethna-users:0215] W+D Vol31に載ってたDNS検索の実装 31号なんて見当たらんのだが。どこに売ってるんだ?
156 名前:nobodyさん [2006/02/23(木) 22:58:50 ID:InB2CvHj] このスレみると join できないって書いてあるけど、 ethna.jp/ethna-changes.html を見ると、 Ethna_AppObjectのJOIN検索がSQLエラーになる(ことがある)問題を修正 とか書いてあるね。
157 名前:nobodyさん mailto:sage [2006/02/24(金) 03:16:50 ID:???] >>155 過去にWEB+DB MAGAZINEに執筆したことのある人のところには 今週のはじめくらいに届いてる。 うちにもあるよ。
158 名前:nobodyさん mailto:sage [2006/02/24(金) 08:18:52 ID:???] >>157 なるほど。 じゃあもうすぐ発売されるのね。 楽しみに待っとく。ノシ
159 名前:nobodyさん mailto:sage [2006/02/26(日) 02:52:08 ID:???] >>156 でも@todoには「複数テーブルのJOIN対応」と書いてあるし JOINしたクエリを返す_SQLPlugin_SearchTableは未実装。 更新履歴のはJOINでなくてANDという意味だったりして。 >>157 定期購読も早く届く。
160 名前:nobodyさん mailto:sage [2006/02/26(日) 12:22:12 ID:???] >>159 たしかに未実装と言えば未実装なんだけど、_SQLPlugin_SearchTableは 継承先クラスでベタなSQLを書いてやれば動作するっていう意味では 実装済みとも言える。 AppObjectにJOINする側のプロパティとJOINする側のテーブルとJOIN条件を 記述するプロパティとその記述方法があれば、具体的に_SQLPlugin_SearchTable も実装できるね。ただ、ORMではその記述方法は一般的にやや複雑になりがち。 MapleのActiveRecordもJOIN条件を記述するルールは「へー」って感じだった。
161 名前:nobodyさん mailto:sage [2006/02/26(日) 22:51:40 ID:???] ethna.jp/index.php?ethna-tutorial-form-complexvalidate これ見てるんだけど prepareの中で $this->form なんて無くね?
162 名前:nobodyさん mailto:sage [2006/02/26(日) 22:54:36 ID:???] >>161 ソースも確認しないでエスパー回答するけど、 $this->af->form じゃね?
163 名前:nobodyさん mailto:sage [2006/02/27(月) 00:00:12 ID:???] >>161-162 既出 ethna.jp/ethna-request.html
164 名前:nobodyさん mailto:sage [2006/02/27(月) 00:37:43 ID:???] >>163 わかってるなら wikiなんだから直してよ〜
165 名前:nobodyさん mailto:sage [2006/02/27(月) 00:40:08 ID:???] てか、直しました。
166 名前:nobodyさん mailto:sage [2006/03/01(水) 19:12:57 ID:???] 2月の肉の日リリースはないのは28日までだから?
167 名前:nobodyさん mailto:sage [2006/03/01(水) 20:29:34 ID:???] バージョンおかしくない?
168 名前:nobodyさん mailto:sage [2006/03/06(月) 23:22:03 ID:???] Sessionってどうやって使ったらいいのでしょう? ActionFormはSessionでも保ってくれていいんじゃないかと思うんだけどなー。
169 名前:nobodyさん mailto:sage [2006/03/10(金) 00:41:44 ID:???] >168 確かに。 hiddenつくるのめんどうだし
170 名前:nobodyさん mailto:sage [2006/03/11(土) 16:47:54 ID:???] >>168 使い方って、 $this->session->set('hoge', $hage); $hage = $this->session->get('hoge'); こういうことじゃなくて? formの値は$formに保持してるでしょ? そういうことじゃなくて?
171 名前:nobodyさん mailto:sage [2006/03/13(月) 00:08:04 ID:???] 配列strに$this->af->set()する方法がわからないです。 読むのはできるんだけどなー。
172 名前:nobodyさん mailto:sage [2006/03/13(月) 00:22:34 ID:???] 方法があると思い込んでたけど、ないみたい。 Ethna_ActionForm.php に function setArray($name,$name2, $value) { $this->form_vars[$name][$name2] = $value; } を追加してみた。 何か問題でるかなぁ。
173 名前:nobodyさん mailto:sage [2006/03/14(火) 01:54:35 ID:???] $this->af->set('hage', array('hoge' => 'fuga')); って無理?コード読んで無いけど。
174 名前:nobodyさん mailto:sage [2006/03/14(火) 12:25:45 ID:???] >173 出来ました。 ありがとうございます。 でも、 hage[’hoge’] hage[’moge’] hage[’poge’] とかあった場合、 hage[’moge’]だけをセットしたいとかってできますかね? 上のだと全部置き換わっちゃうので。
175 名前:nobodyさん mailto:sage [2006/03/14(火) 12:29:23 ID:???] $this->af->set('hage', array('moge' => $hage['moge']));
176 名前:nobodyさん mailto:sage [2006/03/14(火) 22:55:59 ID:???] 配列型のformって、 var $form = array( 'hage' => array( 'name' => '禿', 'form_type' => FORM_TYPE_TEXT, 'type' => array(VAR_TYPE_STRING), ), ); こんな風に書きますよね。 だから連想配列をセットするっていう感覚が無いなぁ。 連想配列をセットするときはもっぱら $this->af->setAppを使うと思うんだけど・・・。
177 名前:nobodyさん mailto:sage [2006/03/15(水) 00:20:47 ID:???] >175 ちょっと理解できませんでした。 これだと、$hageの中身が$hage['moge']だけになっちゃうんじゃないかと思うんですが。 >176 配列なら連想配列じゃなくても添字が数字でも構わないんですが $this->af->set 出来るんでしょうか?
178 名前:nobodyさん mailto:sage [2006/03/15(水) 16:37:02 ID:???] afって言われるとアナルファックと思ってしまうのは 俺だけ?
179 名前:nobodyさん mailto:sage [2006/03/16(木) 02:43:35 ID:???] $arg = $this->af->get('hage'); $arg['moge'] = 'moge'; $this->af->set('hage', $arg);
180 名前:nobodyさん mailto:sage [2006/03/17(金) 00:44:30 ID:???] >179 出来ました。なるほど! 感謝です。 ちょっと使いづらいかなぁと素人考え的には思いますけど、これでなれたほうがいいのかなぁ。
181 名前:179 mailto:sage [2006/03/24(金) 22:57:08 ID:???] 俺も素人だから、詳しいところはよくわからない。 MLに投げるのが一番じゃないか?
182 名前:nobodyさん mailto:sage [2006/03/27(月) 09:28:29 ID:???] >>170 便乗質問です。 例えば、 ActionA -> ViewB(画面表示) -> ActionC -> ViewD(画面表示) という流れの中で、ActionAでSessionに値を保存し、 ViewBで取り出して画面に埋め込むと正しく表示されるのですが、 ViewDで取り出しても値が残っていないようで表示されません。 ViewBとActionCの間で何か処理しないとダメなのでしょうか? Sessionなのでずっと値を保持してくれていると思っていたのですが…。 直接は関係ないと思いますが、$this->sessionと $this->backend->sessionは何か違うのでしょか? 環境はPHP5.1.2+Ethna0.2.0です。
183 名前:nobodyさん mailto:sage [2006/03/27(月) 15:27:28 ID:???] >>182 処理は不要。 $this->session->remove したり、上書きしない限り保持されたままだと思う。 session自体は値をseriarizeしてファイルに保存してるだけなので、 shellで直接覗いてみては? /{project}/tmp にsess_xxxxxxxxなファイルがあるから。 $this->backend->session は使ったことないからわかりません。
184 名前:nobodyさん mailto:sage [2006/03/27(月) 19:05:55 ID:???] >>183 レスありがとうございます。 確かにtmpディレクトリ下にsess_xxxxという名前のファイルがありますね。 恐らく、セッション情報はファイルで保存されているが、画面間の遷移で 上手く持ち回せていないような感じです。 一般的にセッションIDをhiddenやURLパラメータ、クッキーで持ち回すようにすると思いますが、 Ethnaを利用した場合、この辺は意識しなくて良いはずということなのでしょうか? Ethna_Sessionクラスの定義を見ると、何やらクッキーの操作が書かれていますが、 例えばブラウザ側がクッキーを拒否する設定にしてあると、 Session機能が使えないということはありませんか?
185 名前:nobodyさん mailto:sage [2006/03/27(月) 19:20:13 ID:???] >>184 Ethnaだけでなくphp.iniの設定も影響するのでは? 自分は session.use_cookies = 1 session.use_only_cookies = 1 にしてるんでcookieを禁止すると当然セッションは利用できませんね。
186 名前:nobodyさん mailto:sage [2006/03/27(月) 20:19:22 ID:???] >>185 クッキーに関してPHPのセッション設定とブラウザの設定を行ったところ、 Ethnaのセッション機能が上手く機能するようになりました。 フレームワークとは言っても、所詮PHPの上に構築されたものなので、 この辺の設定は影響するのは当たり前ですよね。 アドバイス、どうもありがとうございました。
187 名前:nobodyさん mailto:sage [2006/03/28(火) 04:45:19 ID:???] prefilterで設定したメンバ変数とかをアクションで使いたい場合って どうするのが一番スマートでしょう?
188 名前:nobodyさん mailto:sage [2006/03/29(水) 22:25:28 ID:???] HTMLのリンクの値はどうやってActionで取得するの? 画面A: <a href="index.php?action_admin_Hoge=true&uid=1>リンク</a> Hogeクラスでuidの値1を取得しようとして、 $this->af->get('uid'); だと取得できない。 ちなみに、$UID=$_GET['uid']; だとHogeクラスで取得可です。 ※ActionFormクラスにuid書いてあります。
189 名前:nobodyさん mailto:sage [2006/03/29(水) 23:52:13 ID:???] >>188 HTMLいい加減に書いてるのか? &は&にして、hrefがケツの"が抜けてるのが原因とか。
190 名前:nobodyさん mailto:sage [2006/03/29(水) 23:52:48 ID:???] &は&amp;
191 名前:nobodyさん mailto:sage [2006/03/30(木) 00:08:30 ID:???] 29の日リリースは???
192 名前:nobodyさん mailto:sage [2006/03/30(木) 01:55:10 ID:???] >>189 >>190 後ろの"はタイポです。&を&にしてみましたが、結果同じで$_GET['uid'] ならうまく行くんですがねぇ。 う〜ん、何がいけないんだろう? そもそも、$this->af->get('uid')で値取得するという方法自体はあってます?
193 名前:nobodyさん [2006/03/30(木) 02:43:29 ID:3Q5YeNEn] 普通は取得できるはず
194 名前:189 mailto:sage [2006/03/30(木) 08:39:35 ID:???] >>192 POSTメソッドの時は$_POSTのみがactionFormに送られて、 GETメソッドの時は$_GETがactionFormに送られる。 なので、 <form action="?action_admin_hoge&uid=1" method="POST"> とした場合、$this->af->get('uid')は得られない。 もちろん、ControllerのActionFormに送る部分をオーバーライドして定義すれば 問題ない。 そういうことではなく、ただのリンクで? であれば、ActionFormを継承で定義してるつもりがgenerate_actionで 自動生成されるvar $formで上書き定義されているとかかな?
195 名前:189 mailto:sage [2006/03/30(木) 08:43:02 ID:???] >>188 というか、Hogeクラスってなんだ? 何を継承したクラスだ? $this->af->getできるのは、ActionClass/ViewClass内と「登録済みの」AppManagerだ。どこでgetしてる?
196 名前:nobodyさん mailto:sage [2006/03/30(木) 09:29:33 ID:???] とりあえず棚。 現象が再現する最小限のソースを書いて。
197 名前:nobodyさん mailto:sage [2006/03/30(木) 10:40:26 ID:???] >>194 >>196 ありがとうございます。 再現スクリプトを書いていたら、>>194 さん指摘の var $formが上書き定義されていたのが原因だった事がわかりました。 ありがとうございました!! >>195 HogeクラスはEthna_ActionClassを継承したActionClassでした。
198 名前:nobodyさん mailto:sage [2006/04/07(金) 09:59:34 ID:???] すいません、Ethnaとはちょっと関係ないですが、配列の質問です。 selectリストボックスの作り方を教えてください。 WEB+DB PRESS Vol.27にリストボックスを つくりには、の部分で以下のような感じの記述があります。 $gender = array( 1 => array('name' => '男'), 2 => array('name' => '女'), ); これを月(1月〜12月)をforで回して作りたいのです。 どのように作ったら良いですか? また、今月をselectedにした状態で表示したいのですが、 どのように実現させたらいいですか? テンプレートでは以下のように書いています。 {select list=$app.month name="month" value=$form.month}月 よろしくお願いします。m(__)m
199 名前:nobodyさん [2006/04/08(土) 03:14:33 ID:NDJpgQtZ] AppObjectのPostgres対応化断念。 さようならEthna・・・。
200 名前:nobodyさん mailto:sage [2006/04/08(土) 14:58:41 ID:???] >>199 なんで? どこでひっかかる?
201 名前:nobodyさん mailto:sage [2006/04/08(土) 15:03:52 ID:???] >>199 さようならPostgres のほうがいいよ
202 名前:nobodyさん mailto:sage [2006/04/08(土) 15:11:42 ID:???] >>199 >>200 同様どこでひかかるの?
203 名前:nobodyさん mailto:sage [2006/04/08(土) 17:21:13 ID:???] >>202 Ethna_AppSQL::unescapeSQL() あたりじゃないかな。 自分もMySQLに依存しないようにPEAR::DB対応にしようとして、それで挫折した。 Ethna_AppSQL::unescapeSQL() でエスケープに addslashes() を使ってることも問題なんだけど。
204 名前:200 mailto:sage [2006/04/08(土) 20:25:37 ID:???] >>199 それなら$dsn取ってきて、それぞれのRDBMにあわせた処理すればいいだけじゃん。 これくらいで諦めるのはもったいないですよ。 function escapeSQL(&$var) { $ctl =& Ethna_Controller::getInstance(); $dsn = current($ctl->dsn) ; $db_type = substr($dsn, 0, strpos($dsn, ':')); if (!is_array($var)) { if (is_null($var)) { $var = 'NULL'; } else { switch($db_type){ case 'pgsql' : $var = pgsql_escape_string($var) ; break ; default : $var ='¥'' . addslashes($var) . '¥''; } } return; }
205 名前:200 mailto:sage [2006/04/08(土) 20:30:11 ID:???] あ、unescapeか。スマソ。 でも、RDBMにあわせたunescape自体が結構面倒そう。 ライブラリ探すか、力技使うしか無いと思うが。
206 名前:nobodyさん mailto:sage [2006/04/08(土) 21:07:01 ID:???] 予めこういうところが設定の書き換えだけで切り替えられるようになってるともっといいのにね。
207 名前:nobodyさん mailto:sage [2006/04/09(日) 01:17:55 ID:???] mysqlとpostgresとsqliteくらいつかえればたいていの人が満足するのかな。 oracleとか使ってる人いる?
208 名前:nobodyさん mailto:sage [2006/04/09(日) 02:37:42 ID:???] ノ
209 名前:nobodyさん mailto:sage [2006/04/09(日) 05:54:19 ID:???] >>207 できるなら、MSSQLの対応も。
210 名前:202 mailto:sage [2006/04/09(日) 10:16:14 ID:???] mantis でも使われている adodb あたりも考えたことがあるんだけど これも面倒そうなんだよね。
211 名前:nobodyさん mailto:sage [2006/04/09(日) 15:08:46 ID:???] 私はpostgreSQLですが、AppObjectを使わないという選択肢をとってます。 ちょっとさびしいけどねぇ。 postgreSQLは日本では結構なユーザがいるので、非対応はコミットしてくる人を減らてるような気がします。 偉い人がんばれ
212 名前:nobodyさん mailto:sage [2006/04/10(月) 23:20:29 ID:???] >>209 MSSQL をわざわざ PHP から使うのか
213 名前:nobodyさん mailto:sage [2006/04/11(火) 10:05:10 ID:???] PHPからOracle使ってる俺がきましたよ。
214 名前:nobodyさん mailto:sage [2006/04/11(火) 11:45:21 ID:???] Oracleは普通に使われてると思う。 MSSQLはPHPで使ってる人が少なすぎて、MSSQLモジュール自体が メンテされずに、大分怪しいものになってるという噂も聞く。
215 名前:nobodyさん mailto:sage [2006/04/14(金) 19:12:28 ID:???] アクションから別のアクションを呼ぶのってどうやればいいんですか? バリデートエラーのときに、前のアクションを実行して戻したいときのような
216 名前:nobodyさん mailto:sage [2006/04/14(金) 20:16:35 ID:???] DBで、queryした後のエラー判定とかってできないでしょうか? ethnaとおってるからisErrorが効かないようなんですが
217 名前:nobodyさん mailto:sage [2006/04/14(金) 23:31:20 ID:???] >>215 parent::prepare(); とか
218 名前:nobodyさん mailto:sage [2006/04/15(土) 04:56:29 ID:???] >>217 わからん・・・ parentのprepareを呼ぶとどうなるんや・・
219 名前:nobodyさん mailto:sage [2006/04/15(土) 10:04:53 ID:???] Ethna::isError($res) とかで判定できない? エラーになった場合、返り値のクラスは何になってる?
220 名前:nobodyさん mailto:sage [2006/04/15(土) 10:58:14 ID:???] >>215 ActionClass の prepare の戻り値が遷移先名になっているから、 戻り値に飛ばしたい、アクション名じゃいかんの?
221 名前:nobodyさん mailto:sage [2006/04/15(土) 16:16:18 ID:???] prepareの戻り値は null->正常 null以外->テンプレート名 ではないんですか? たとえばDBからユーザーの新規追加フォームとユーザー一覧が表示されているようなページに戻したいんです。 普通に新規追加のバリデーションエラーとしてreturn 'user_list';とかにするとテンプレートを呼び出すだけなのでユーザー一覧が表示されません。 もうちょっと調べてみます。情報ありがとうございます。
222 名前:nobodyさん [2006/04/15(土) 18:14:06 ID:q5ZbQNWP] mapleだと [View] input = action:アクション名 みたいにできるんだけどな
223 名前:nobodyさん mailto:sage [2006/04/15(土) 22:49:43 ID:???] >>221 俺も良く分かっていないんだけど、 action->view->template と呼ばれる中で、例えば action でエラーが 発生した場合、前の(元の)ページへ戻るよう return 値を設定しても、 元のページの view->template しか実行してくれないんだよな。 だから view がなくせ無いし、view で値を取得するような処理も削除できない。 haltさんは view は不要って言ってるけどどうやって実現しているのだろうか?
224 名前:nobodyさん [2006/04/18(火) 03:35:13 ID:AmgnkAQV] テンプレートで表示する{$errors}の変数を Actionクラスからアクセスしたいんだけど、 どうやってやればいいですか?
225 名前:nobodyさん mailto:sage [2006/04/18(火) 05:30:59 ID:???] >>221 viewクラスからリダイレクトすればいいんかな?
226 名前:nobodyさん mailto:sage [2006/04/18(火) 05:36:19 ID:???] >>224 $this->ae->getMessageList() でいけるはず
227 名前:nobodyさん mailto:sage [2006/04/18(火) 18:32:18 ID:???] >>226 アクションクラスだから $this->af->ae->getMessageList()
228 名前:224 mailto:sage [2006/04/18(火) 23:57:24 ID:???] >>225-227 ありがとうございました。>>227 でアクセスできました。
229 名前:nobodyさん [2006/04/23(日) 21:24:44 ID:AC8rHv07] 2.1.0-preview1が公開されてるよ。 試験的に導入してみよう。
230 名前:nobodyさん mailto:sage [2006/04/23(日) 22:40:17 ID:???] generate_project_skelton.phpがなくなってた。。
231 名前:nobodyさん mailto:sage [2006/04/23(日) 23:47:24 ID:???] beta.ethna.jp/ かっこいい! 早くこれにしてくんないかなー。 やっぱりサイトがかっこいいと、いいもの使ってる感がでていい。
232 名前:nobodyさん mailto:sage [2006/04/23(日) 23:55:56 ID:???] >>231 本気か嫌味かわからん・・・
233 名前:nobodyさん mailto:sage [2006/04/24(月) 00:09:17 ID:???] 現行よりはいいよ。 清潔感あるし。最近はやってるねこういうデザイン。
234 名前:nobodyさん mailto:sage [2006/04/24(月) 02:08:52 ID:???] 俺はあまり好きじゃないな。 なんかセンス古くない? Mapleのデザインはシンプルでいいと思う。
235 名前:nobodyさん mailto:sage [2006/04/24(月) 22:43:00 ID:???] sidebarが下にずれとる@Safari
236 名前:nobodyさん mailto:sage [2006/04/25(火) 01:37:43 ID:???] ADODBとか標準がうれしい
237 名前:nobodyさん mailto:sage [2006/04/25(火) 03:21:23 ID:???] おー、サイト変わってたのか。 2.0.1→2.1.0の変更点ってまだ載ってない?
238 名前:nobodyさん [2006/04/26(水) 11:31:00 ID:d7Bd/O1A] Operaもずれとる
239 名前:nobodyさん mailto:sage [2006/04/28(金) 15:09:37 ID:???] >>221 つまり、「ユーザー登録を行ったあとにユーザ一覧を表示する」ってことでいいかな? これは掲示板でいえば「投稿したあと記事の一覧に戻る」みたいなかんじ? ここはredirectするのが正しい。 Actionのreturnでtemplateやviewを呼んで表示させた場合ブラウザ内部で POSTしたデータをもったまま画面遷移してしまうのでリロードしたときに 再度データ送信してしまう可能性がある。のでredirect。 これはMojaviとか他のフレームワークでもフレームワーク使ってなくても同様。 redirect.tplってのを作ってそこのHTMLのMETAで飛ばすとGREEっぽい。 (ActionでsetApp('redirect_to', 'example.com/ '); return 'redirect'って感じで) このへんのテクニックは近日発売の超極めげふんげふんにある ソースコードに書いてあります。あれはView一つあるかないかくらい。 >>223 そのケースはエラー発生時にエラー画面に飛ばすということだから>>221 とは ちょっと違う感じ。Formのvalidationでエラーがでたときの話? もう少し具体的な例をあげてくれると答えられるかもしれません。
240 名前:nobodyさん mailto:sage [2006/04/28(金) 15:33:16 ID:???] >>239 ありがとうございます!
241 名前:nobodyさん mailto:sage [2006/04/29(土) 17:22:44 ID:???] フレームワークを使うメリットがいまだに分からん。 PHPを覚えたうえに他人が決めたルールをさらに覚えるなんてムダな・・・
242 名前:nobodyさん mailto:sage [2006/04/29(土) 18:08:49 ID:???] >>241 なら苦労し続ければいいと思う。 フレームワークにメリットがなければRailsもCatalystも流行らないわけで。
243 名前:nobodyさん mailto:sage [2006/04/29(土) 19:07:51 ID:???] j;;;;;j,. ---一、 ` ―--‐、_ l;;;;;; 『フレームワークなんて使うよりも {;;;;;;ゝ T辷iフ i f'辷jァ !i;;;;; 自分ルールで書いた方が早いし分かり易いじゃん』 ヾ;;;ハ ノ .::!lリ;;r゙ `Z;i 〈.,_..,. ノ;;;;;;;;> そんなふうに考えていた時期が ,;ぇハ、 、_,.ー-、_',. ,f゙: Y;;f 俺にもありました ~''戈ヽ `二´ r'´:::. `!
244 名前:nobodyさん mailto:sage [2006/04/29(土) 23:07:46 ID:???] 一人でやってるうちは良いんだけどね。>おれおれ主義 自分はあんまりセンスが良くないので、達人のエッセンスを流用できて 勉強にもなったし、メリットは大きかった。
245 名前:nobodyさん mailto:sage [2006/04/29(土) 23:29:25 ID:???] 中途半端にフレームワーク使おうとすると 逆に辛くなるよね。 身体まるっと投げ出すくらいにすると結構楽になる。
246 名前:nobodyさん mailto:sage [2006/04/30(日) 00:08:03 ID:???] Ethnaのドキュメントってオンライン版だけしかないんかな?
247 名前:nobodyさん mailto:sage [2006/04/30(日) 11:18:33 ID:???] Irvine でも使って落としたら
248 名前:nobodyさん [2006/04/30(日) 13:31:50 ID:9b2aSJKI] 上の方でもちょっと話題出てたけど action1→action2→view2 ってのはむりなのかい? どうしてもやりたい場合はリダイレクトが無難? 他のフレームワークではできるの?
249 名前:nobodyさん mailto:sage [2006/04/30(日) 15:29:15 ID:???] >>248 なんでActionをわける必要がある? あるとすれば設計がおかしい
250 名前:nobodyさん mailto: [2006/04/30(日) 17:12:39 ID:???] >>242 だって全然苦労してないもん。 一つのスクリプトなんてせいぜい500行以下(大規模なアプリはそれらを複数組み合わせる)だし、 そんなもん1日あれば十分書ける。 繰り返し出てくる似たような処理は以前に作ったコードを関数化してコピペすりゃいいし、 フレームワークどころかクラスの必要性すら感じない。
251 名前:nobodyさん mailto:sage [2006/04/30(日) 17:22:53 ID:???] >250 自分の手足のような再利用性の高いコードをたくさん持ってる人にはたしかに一理あるかも。 逆に言うと、フレームワークの機能を手足のように使えるようになればいろんな人がコミットした便利なコードがどんどん使えるようになるのでは?
252 名前:nobodyさん mailto:sage [2006/04/30(日) 17:26:22 ID:???] >>250 のサイトはメンテ大変そう。
253 名前:nobodyさん mailto:sage [2006/04/30(日) 18:03:02 ID:???] まあ今も今後も250しかそのスクリプトに関わる事がないなら別にいいんじゃないか。
254 名前:nobodyさん mailto:sage [2006/04/30(日) 19:07:53 ID:???] つか、直接Ethnaに関係ない話題は オブジェクト指向スレか、フレームワークスレでやったほうがいいよ
255 名前:250 mailto: [2006/04/30(日) 20:01:12 ID:???] >>251 フレームワークを手足のように・・・は、その通りかもね。 でも俺は個人的には他人のソースを読んで理解する手間をかけるなら、自分で書くほうが早いと思う。 >>252 他人が関わるとなると大変だろうね。でもコメント含め、極力分かりやすく書いてるけど。 ここにいる人たちは個人開発でもフレームワークを使ってるんだろうか??
256 名前:nobodyさん mailto:sage [2006/04/30(日) 20:40:12 ID:???] 既に慣れてるから個人開発でも使ってるよ。 分かりやすいしね。
257 名前:250 mailto: [2006/04/30(日) 21:11:35 ID:???] >>256 でもさ、いくら慣れようとも、やっぱり他人の作った枠組み(フレームワーク)を 使うことによってまた新たな(余計な)問題や悩みが出てくるわけだよね。 だからこのスレみたいな質問スレもあるわけだし。 ってことは、チーム開発でもしない限り、フレームワークなんて 使うだけ二度手間で無駄だと俺は思うんだが。
258 名前:nobodyさん mailto:sage [2006/04/30(日) 21:27:42 ID:???] デザパタとかのプログラミング的教養が 自然に身に付くメリットもあるよ
259 名前:nobodyさん mailto:sage [2006/04/30(日) 23:17:46 ID:???] >>257 他人のソースに学ぶものなど無いと思うんなら、そのままでいいんじゃない? スレ違いなんで続きは↓なんかでやってはいかがでしょう。 [PHP]フレームワークについて語るスレ3[総合] pc8.2ch.net/test/read.cgi/php/1145971945/l50
260 名前:nobodyさん mailto:sage [2006/04/30(日) 23:43:57 ID:???] >>258 たしかに、俺はEthnaを使えるようになる過程で ・ORM ・MVC について、勉強させられた。 結果として、それらが理解できて今幸せだけど、>>250 みたいに、 その壁を超えるのが嫌ってのもわからんでもないから、それはそれで良いと思う。 ただ、今のところ、出てきた問題が「余計」とか思ったことはないなー。 その問題が解決されたときに「また勉強になった」と思えたし。 あと、Ethnaはそれに固着した問題が出にくい構成だと思う。 結構「なんでもあり」で素晴らしいフレームワークだと思ってる。 (と、話をEthnaに戻す)
261 名前:nobodyさん mailto:sage [2006/05/01(月) 00:22:31 ID:???] >260 私もすごく勉強になってます。 初心者から中級者になるのってとても溝が深いと思うけど、Ethnaを使いこなそうと思ってがんばる過程がその一助になるんじゃないかなぁと妄想してます。 ところで、ここのToDoみてハアハアしてます。 beta.ethna.jp/index.php?ethna-document-roadmap かなりテンコ盛りですよねー。正式版はいつになるのかなぁ。 postgreSQL好きなので Ethna_AppObject改善 直SQLサポート DB依存改善 ってところを先行でお願いします。ぺこり。
262 名前:nobodyさん mailto:sage [2006/05/01(月) 00:36:34 ID:???] ところでEthnaは基本的にPHP4をベースで バージョンアップしていくと考えていいのかな? 先日ちょっと触ってみて良さそうだったので 本格的にEthnaで開発しようと思ってるんだけど、 基本的にまだバージョン4の環境の方が多いので・・・。
263 名前:nobodyさん mailto: [2006/05/01(月) 00:45:41 ID:???] >>260 新しい知識や枠組みを理解して「ランナーズハイ」を得るのはいいけど、 問題はそれが実際にどれくらい役に立つか、どれくらい生産性を上げるか、に尽きるよね。 >>250 みたいに、1日〜数日で書けるようなスクリプトのために わざわざフレームワークが必要なのかどうかが疑問。 (そもそもPHPでそこまで大規模なものを作る必要がある個人や組織って、そんなに多くいるか??)
264 名前:nobodyさん mailto:sage [2006/05/01(月) 01:08:28 ID:???] >>263 > >>250 みたいに、1日〜数日で書けるようなスクリプトのために 一つ一つのスクリプトは小さくてもサイト全体では何十個も書くわけで、 それが統一的な書式で書かれるメリットはあるんじゃない? また、協業するほどの規模ではなくても、メンテナンスを他人に任せる ことはあるし、その時に考えたやプロセスの流れをゼロから説明するよりも、 Ethnaの用語を共通語として説明する方が楽という面もあるなぁ。 引き継ぐ人にはEthnaの勉強をしてもらわないといけないけど、自分流を 押し付けられるよりは反発が少ない>経験上 ま、250氏は物は試しで Ethna を使って2,3アプリを作ってみて 判断すれば良いんじゃないかな?
265 名前:250 mailto:sage [2006/05/01(月) 01:48:07 ID:???] >>264 なるほど、それはたしかに一理ありますね。 でも俺はアホだからEthnaを勉強するのにすげー時間がかかりそうですorz あと、「サイト全体では何十個も」って、いったいどんな規模のサイトなんだろう・・・?? たとえばmixiを例にとると、1000行以下のスクリプトが15個くらいあれば足りると思うんだけど・・・
266 名前:nobodyさん mailto:sage [2006/05/01(月) 02:02:25 ID:???] >>265 mixiは15個じゃ足りない。1000行よりももっと小さくファイルを分割する。
267 名前:nobodyさん mailto:sage [2006/05/01(月) 02:58:52 ID:???] >>266 具体的に何にいくつ使うんだ?? 表面的に見えてるもの(home.plなど)だけで10個くらい、 裏方で動いてるであろうもの(cronで動かしてるもの含む)も せいぜい10〜20個くらいじゃないか? どんなに多く見積もってもせいぜい30だな。
268 名前:nobodyさん mailto:sage [2006/05/01(月) 04:08:04 ID:???] >>248 mapleはできる >>249 1,ユーザ一覧と、ユーザ登録フォームがあるページ 2,ユーザを登録するためにフォームに入力->submit 3,validateエラーなので1に戻す 普通にテンプレートだけ指定すると当然ユーザ一覧は表示されない だから1のアクションをもう一度実行したい。 location使ってもいいけどフォームの入力値が保存されないのが問題
269 名前:nobodyさん mailto:sage [2006/05/01(月) 04:15:37 ID:???] >>268 そういう場合は共通の動作(ユーザ一覧を取得とか)をactionクラスの中のメソッドにして 3の時にもう一回そのメソッド呼ぶって感じで処理してるな。 俺も他にスマートな方法があったら知りたい。
270 名前:nobodyさん mailto:sage [2006/05/01(月) 05:22:22 ID:???] >>267 見えてるものだけでも30は超えるだろ トップ、登録、ログイン、ログアウト 日記検索、表示、日記書き込み、コメント一覧 友たち一覧、コミュ一覧、足あと プロフィール表示、編集、設定変更 紹介文表示、書き込み、写真編集 掲示板一覧、編集、閲覧 コミュ検索、参加、退会、誘う、管理人まわり レビュー検索、編集、閲覧 メッセージ表示、送信 フォトアルバム検索、編集、閲覧 ヘルプ、mikly、リリース情報
271 名前:nobodyさん mailto:sage [2006/05/01(月) 10:43:38 ID:???] >>270 に加えて mixiの中の人が使う管理ツールとか、バッチ処理を行うcronとか 広告まわりの管理機能も必要だな。ニュースの取り込みもある。 数えればきりがないし、今後どんどん増えていくだろう。。 最初は少なくても、あれをやりたい、これをやりたいって言ってるうちに だんだん膨れ上がっていくことはWEBでもよくある話だ。 なのでフレームワークを導入しておくメリットはあると思う。 >>261 なんかTODOふえてるなー。てんこもり状態だ。 JSONやAjaxもいいけど、DBまわりの改善を強く望みます!!
272 名前:nobodyさん mailto:sage [2006/05/01(月) 11:15:30 ID:???] >>268 なるほど意味わかった。 >>269 のやり方が正解。 ただし>>269 はActionのメソッドとして実装しているけれど ここは「ユーザー一覧を取得するメソッド」を持つ AppManager(ProjectId_UserManagerとか?)を作って それをActionから呼び出す。 AppManagerにすればどのActionからでも使えるし。 基本的に画面の遷移、フォーム制御以外のロジックは AppManagerに全部かいてしまうのが良い。
273 名前:nobodyさん mailto:sage [2006/05/01(月) 11:35:03 ID:???] >>270 あっ、そっか!! ちょっと数え方を勘違いしてた。 そうだよね、それくらいあるよね。 で、数は多いけど一つ一つはけっこう単純で簡単なスクリプトって感じだよね。 >>271 とりあえず基本機能だけに絞れば、2〜3日あれば一人で作れそうだよね??
274 名前:nobodyさん mailto:sage [2006/05/01(月) 15:02:53 ID:???] >>273 ロールやセッション、DB周り、一つ一つにエラー処理といろいろと 考え出すときりがないし、無いと問題になるから。 むしろその辺をFWに任せたり、無視できれば楽w。
275 名前:nobodyさん mailto:sage [2006/05/01(月) 16:29:57 ID:???] >>273 見込みが甘すぎないか。。 単純な基本機能だけなら、すぐにできるかもかもしれないが、 細かな機能を揃えてアプリが大きくなるにつれ、 メンテコストはどんどん上がり、開発速度はどんどん落ちるぞ。 mixiの規模なら動作検証テストを行うだけでも大変だ。
276 名前:nobodyさん mailto:sage [2006/05/01(月) 16:30:03 ID:???] >>274 俺はむしろエラー関係やセキュリティ関係などをFWに任せてしまったときに、 万が一FWの不具合または自分の理解不足や使い方のまずさのせいで 何か問題が起こると手が付けられないので、自力でやったほうが安心できるw
277 名前:nobodyさん mailto:sage [2006/05/01(月) 17:51:12 ID:???] >>275 機能にしぼるっていってるんだから、規模は別でしょ
278 名前:nobodyさん mailto:sage [2006/05/01(月) 23:38:44 ID:???] とりあえず、スレ違い。
279 名前:nobodyさん mailto:sage [2006/05/02(火) 00:24:21 ID:???] っていうか大規模サイトの動作検証テストってどうやるんだろ? たとえば、数万人が同時にアクセスしたときの状況なんて どうやって事前にテストするの??
280 名前:nobodyさん mailto:sage [2006/05/02(火) 01:25:50 ID:???] >>279 個人サイトだけど、 アパッチベンチで付加テストでやったよ。
281 名前:nobodyさん [2006/05/02(火) 07:06:11 ID:9MMBFPNj] Ethna使ってるGREEは 複数のDBを使ってると思うんだけど Ethnaは分散DBとかクラスタリングに対するアプローチを提供しているの? Ethna使ったらそのへん少しは楽になる?
282 名前:nobodyさん mailto:sage [2006/05/02(火) 11:13:31 ID:???] >281 mysql のレプリケーションには対応してるよ。 複数DBが設定できて、それぞれにRead(slave)とWrite(master)の属性をつける感じ?
283 名前:nobodyさん mailto:sage [2006/05/03(水) 05:34:31 ID:???] >>282 ・テーブルごと、read/writeごとに 適切なDBサーバに接続してクエリ発行 ・上層では、どこに接続しているかを知る必要はない って形にしたいんだ。 レプリケーション対応ってことはそのあたりも 考慮されてるってことかな。 ちょっと触ってみる(`・ω・´)
284 名前:nobodyさん mailto:sage [2006/05/03(水) 19:49:17 ID:???] ファイルをアップロードするフォームを付けたいと思っています。 デフォルトの状態で、確認画面を出しつつファイルをアップする事って可能でしょうか? サンプルのサインアップのように確認画面を出すと、一応ファイル情報は渡っているのですがプロセス終わっているので一時ファイル消えてしまうのです。 GREEだと、確認時点で既に目的のディレクトリにUPしてファイルのIDを渡しているようなのですが、これと同じようにすればいいのでしょうか…。
285 名前:nobodyさん mailto:sage [2006/05/03(水) 20:42:40 ID:???] >>284 なにをいいたいのさっぱりわからん。
286 名前:nobodyさん mailto:sage [2006/05/03(水) 22:24:45 ID:???] >>285 あはは。同じく。 >>284 GREEのサイトの動作で良いなら同じようにすれば良いし、 不満があるなら分かるように書いてくれ。
287 名前:nobodyさん [2006/05/04(木) 09:38:15 ID:rkFCz1JB] Ethna_SessionのisValidメソッドでは IPを元に妥当性チェックをしています。 IPが変わる環境を想定して 「同一ネットワーク範囲」になっていると思うのですが このメソッドはIPがコロコロ変わる携帯の環境でも適用OKなのでしょうか?
288 名前:nobodyさん mailto:sage [2006/05/04(木) 10:38:37 ID:???] あとセッションをDBに保存したいのですが そのあたりどうするのがベストな解なんでしょう? Ethna_Sessionを継承してControllerのclassプロパティを Ethna_MySQL_Sessionとかいう感じに書き換えるだろうと思ってたのですが www.itt-web.net/modules/xeblog/?action_xeblog_index=1&cat_id=18 こちらのブログを見ると、 DBコネクションが取れないようです。 基幹オブジェクトの生成順序を変更すればいいのかなーとも思いますが… どんなもんでしょう?
289 名前:nobodyさん mailto:sage [2006/05/05(金) 14:20:10 ID:???] Ethna_DB_PEAR::queryに プレースホルダ用のパラメータ渡したら 渡ってなかった(´・ω・`) 自前でSQL全部組み立てて渡さないといけないのね AppObject使わない場合 エスケープはどうするのがEthna流?
290 名前:288 mailto:sage [2006/05/06(土) 10:19:17 ID:???] こんな感じで解決しました。ぽえーん。 ○Ethna_Backendを拡張 コンストラクタの最後で、 自分自身をEthna_Sessionの拡張クラスに渡す。 またshutdownDBでコネクションを廃棄してしまわないよう、 何もしないメソッドでオーバーライドする。 ○Ethna_Sessionを拡張 DbSessionHandlerオブジェクトを生成、ハンドラとしてセット。 Backend受け取り用のメソッドも追加。 Backendを受け取ったらDbSessionHandlerにdbオブジェクトをセット。 ○DbSessionHandler 読み込み、保存等
291 名前:nobodyさん [2006/05/06(土) 16:18:47 ID:10gQsHXE] なんで公式サンプルみれんのん?(´・ω・`)
292 名前:nobodyさん mailto:sage [2006/05/06(土) 17:34:27 ID:???] うん、俺も思ってたw
293 名前:nobodyさん mailto:sage [2006/05/06(土) 18:56:51 ID:???] デモ「サインアップ」が見えなくなったのは、Sample_SmartyPlugin.phpと中に定義されている 関数と、Ethna/class/SmartyPlugin.phpの中に同じ名前の関数が入ったから。 だから重複しているぞとエラーが出る。preview2.1.0にはなかったんだけど beta2.0.2-20060502あたりから入ってる。
294 名前:nobodyさん [2006/05/06(土) 19:29:09 ID:10gQsHXE] postgresでAppObject使ってみてるんだけど、 primaryつけたら、なぜかgroup byしてエラーになるんですよね。。。 Ethna_AppObjectの_getSQL_SearchPropを書き換えればいいのかな? それだとバージョンアップ時に面倒なので、何か他に良い回避策無いでしょうか。
295 名前:nobodyさん [2006/05/06(土) 20:40:31 ID:06TlKyoI] Mojaviで言うforwardみたいな、 「Actionを実行して、その結果画面を変数に得る」機能ってないの? ないとすれば、いくつかの小さな画面から構成される画面は どうやって構築するのがEthna流?
296 名前:nobodyさん [2006/05/06(土) 22:41:29 ID:10gQsHXE] アプリ共通のカスタムチェックメソッドはどうやって定義するの? >>76 みたく一個一個のactionFormに書くしかない? Ethna_ActionForm.phpに直接書くのは避けたい。 あああ。慣れるのに時間がかかる〜。
297 名前:nobodyさん mailto:sage [2006/05/06(土) 23:09:53 ID:??? BE:25416522- ] Ethna_ActionFormを継承したクラスを作成して、それの中に書いているよ。 個々のActionFormは、先に作ったクラスを継承させている。 Ethna_ActionClassでの処理も同様に。
298 名前:nobodyさん mailto:sage [2006/05/07(日) 07:41:44 ID:???] 継承を前提としたクラスは 基底クラスからinitializeメソッドとかを呼び出す形にした方が いいんじゃないかな?(Template Method) 現状だと初期化処理するために コンストラクタをオーバーライドしないといけないから。
299 名前:nobodyさん [2006/05/07(日) 11:18:24 ID:ql08TCab] >>297 なるほど!ありがd!! >>298 とりあえず今は parent::Ethna_ActionForm($controller); って逃げとくしかないのがベター?
300 名前:nobodyさん [2006/05/12(金) 23:01:13 ID:rwERuLLO] 作った再利用可能なオブジェクトは どこに入れてる?
301 名前:nobodyさん mailto:sage [2006/05/13(土) 01:16:56 ID:???] >>300 曖昧な質問かも。 再利用可能って、そのアプリ内で?別のアプリでもって意味で? 前者なら/app後者なら/lib さらに、オブジェクトってインスタンスの意味? インスタンスはAppManager使えばsingletonとして問題無し。
302 名前:nobodyさん mailto:sage [2006/05/13(土) 11:56:24 ID:???] ごめんシングルトンのインスタンスのつもりだった シングルトンは基本AppManagerにしていけばいいんだね
303 名前:nobodyさん [2006/05/13(土) 17:20:23 ID:+4PvLPs5] AppManagerって登録した数だけDBに接続してるね。 それって何か不安。 接続する処理消したけど。
304 名前:nobodyさん mailto:sage [2006/05/13(土) 17:29:45 ID:???] 手元にないし詳しく見てないけどそれは違うのでは? 多分すばやくアクセスできるように DBのインスタンスを持たせてるだけだと思うけど
305 名前:nobodyさん [2006/05/13(土) 17:37:51 ID:+4PvLPs5] ああ本当だ。isSetでセットされてればそれ返してる処理があった。
306 名前:nobodyさん [2006/05/13(土) 17:56:51 ID:+4PvLPs5] 登録してあると、DB必要ないページでもいちいち接続しちゃうのはやっぱり嫌だね。 使わないマネージャーまで含めて全部初期化処理実行されるのも負荷が気になる。
307 名前:nobodyさん mailto:sage [2006/05/13(土) 21:57:38 ID:???] >>306 本当に接続してる? 神の設計でそんなダサイことはしないと思う。 backend->getDB()がなされるまでDB接続はしないんで、 AppManagerをnewする段階ではDB接続はしないんじゃまいか? で、getDBするところって、AppObject::searchProp()してるところ 以外では無くって、少なくともAppManagerのコンストラクタでは getDBしてないんで、DB接続は行わない。 よくあるパターンでいえば、 AppManager::getObjectPropList AppManager::getObjectList もしくは、new AppObjectの時点で初めてDB接続を行う。 余談だけど、Ethnaの設計の上手いところは、newしたAppManagerを 各AppManagerで使うときに、ちゃんと参照渡しにしてるんで(フツーそうだけどPHPが(ry)) シングルトンとして成立してる。つまり軽い。
308 名前:nobodyさん [2006/05/13(土) 23:00:13 ID:+4PvLPs5] 接続はしてるみたいだよ。DB停止させてみたら DB使ってないところで接続エラー出たし。 さっき登録してるって書いたのはコントローラの $managerに書いて使う時の話ね。(チュートリアルのように) 見てみたら AppManagerをextendsして そのコンストラクタ内で $backend->getDBList(); となって、getDBListの中でgetDBしてると。 だからAppManager継承してコンストラクタ変更したクラス作ればまぁ解決なんだけど。 ちょっと・・・・ダサいよね。 便利さと引き換えか。
309 名前:nobodyさん mailto:sage [2006/05/14(日) 01:27:21 ID:???] まあDBは使うケースの方が多いからそうなってるんだろう 俺はセッションを必ず発行するようなやり方じゃないのに 感心したけどな。 って感心するほどでもないのかもしれんが Mojaviは必ずセッション張ってたから。
310 名前:nobodyさん [2006/05/14(日) 15:46:31 ID:rwAYtESF] Appマネージャーはセッション作ってるけどな。 Mojaviは設定ファイルでセッション使うか選択できるっしょ。
311 名前:nobodyさん mailto:sage [2006/05/14(日) 16:30:16 ID:???] 携帯でセッション使う場合ってEthnaの場合はどうすればいいの? tplで<?=SID?>って書いても表示されないし・・・
312 名前:nobodyさん mailto:sage [2006/05/14(日) 19:09:57 ID:???] これの公式はなんでアプリケーションが作れるなんて表現使ってるんですかね? アプリケーションって言うかこれで作る物って単なる記事ですよね? アプリケーションというからには一体どのようなメリットがある物を作れるのでしょうか? エスナ自体がアプリケーションというのは分かりますが…
313 名前:nobodyさん mailto:sage [2006/05/14(日) 19:16:14 ID:???] >>312 なにか根本的に勘違いしてる気が…
314 名前:nobodyさん mailto:sage [2006/05/14(日) 19:54:39 ID:???] 312はスルーで
315 名前:nobodyさん mailto:sage [2006/05/14(日) 21:08:48 ID:???] あ、ごめんなさい。 PEARや.NEET Frameworkみたいな物なんですね? 勘違いしてました。 私は規模の小さい物しか作らないので使いそうにありませんね。 2度と来ません。 さようなら。
316 名前:nobodyさん [2006/05/14(日) 23:15:02 ID:KFG0Cy87] 未定義Action名が呼ばれた時用の Actionてどこで定義したらいいん?
317 名前:nobodyさん mailto:sage [2006/05/14(日) 23:16:12 ID:???] ここにあった スマソ ethna.jp/ethna-tutorial-app-fallbackentrypoint.html
318 名前:nobodyさん [2006/05/16(火) 12:03:40 ID:YezSXlp+] こんなネ申な設計ってどうやったらできるようになるん? 漏れがやると、設計しても、後で終わってみたら ぐちゃぐちゃになってるんだけど。。。
319 名前:nobodyさん mailto:sage [2006/05/16(火) 12:18:06 ID:???] >>318 そうでもないと思うが、やりたければ、何かのフレームワークを参考にしたらよろしい これもstruts参考とかだったはずだし
320 名前:nobodyさん mailto:sage [2006/05/16(火) 13:49:55 ID:???] フレームワーク全般で見れば神設計はちょっと言い過ぎ ソース見たら結構雑草精神入ってるよ 分かりやすくて好きだけど
321 名前:nobodyさん mailto:sage [2006/05/16(火) 19:40:38 ID:???] ソースが見やすいですよね。
322 名前:nobodyさん mailto:sage [2006/05/16(火) 20:02:53 ID:???] あと日本語コメントがかなり助かる
323 名前:nobodyさん [2006/05/17(水) 11:33:31 ID:HV8AbfRa] >>219 久しぶりに覗いたら質問したいレスがあったので便乗しますが、 私もDBアクセスのエラー検出で困っています。 例えば下記の様にクエリを実行します。 $db =& $this->backend->getDB(); $res =& $db->query($sql); $sqlにでたらめなクエリ(存在しないテーブルへのアクセスなど)を記述しても、 DB_ErrorではなくDB_Resultが得られます。 ですので、DB::isError($res)はfalseを返します。 当たり前ですが、Ethna::isError($res)でも結果は同じでした。 さらに$res->fetchRow()するとDB_Errorが取得できます。 最悪、フェッチしてその結果を判定することはできるのですが、 やっぱり変ですよね?
324 名前:nobodyさん mailto:sage [2006/05/20(土) 00:48:40 ID:???] >>323 MLに投げたほうが良いと思う
325 名前:nobodyさん mailto:sage [2006/05/22(月) 05:31:33 ID:???] >>323 MLに投げるときはPEAR::DB最新バージョンでの動作確認してからでよろしく。
326 名前:nobodyさん mailto:sage [2006/05/24(水) 21:21:21 ID:???] 2.1期待アゲ
327 名前:nobodyさん mailto:sage [2006/05/25(木) 14:29:12 ID:???] O/Rマッピング使ってたり確認画面なんか出すと、余計なスラッシュ取り除くのがとても面倒そうなんだけど みんなmagic_quotes_gpcはhtaccessとかの設定でOFFにして使ってるの?
328 名前:nobodyさん mailto:sage [2006/05/25(木) 15:01:11 ID:???] magic_quotes_gpcはoffが普通だお
329 名前:nobodyさん mailto:sage [2006/05/25(木) 15:03:43 ID:???] そっかありがとう、バカな事聞いたみたいだね。
330 名前:nobodyさん mailto:sage [2006/05/26(金) 11:26:51 ID:???] ethna.jp/ 落ちてるアゲ
331 名前:nobodyさん mailto:sage [2006/05/26(金) 12:27:00 ID:???] まだ落ちてるね。メーリングリストのログを見たいのに。
332 名前:nobodyさん mailto:sage [2006/05/27(土) 01:49:08 ID:???] うーん 今日日、鯖落ちって何があったら起こるんだろ? へっぽこサイトでも滅多に落ちないのに フレームワークのサイトで落としちゃ駄目でしょという気が しないでもない
333 名前:nobodyさん mailto:sage [2006/05/27(土) 02:32:42 ID:???] >>332 鯖管理とフレームワークは別担当だしあまり関係ないかと。 鯖移転でもしてるのかもね
334 名前:nobodyさん mailto:sage [2006/05/27(土) 04:52:53 ID:???] > 2006/05/25 12時頃〜2006/06/26 22時頃に渡り、サーバの電源障害によりアクセスが出来ない状態が続いておりました。 復旧したみたいね。
335 名前:nobodyさん mailto:sage [2006/05/27(土) 09:45:37 ID:???] 電源障害は冗長性もったハード構成とってないとどうにもならないですね。
336 名前:nobodyさん mailto:sage [2006/05/28(日) 22:55:05 ID:???] また長い間落ちてるね。 どうしたの一体。
337 名前:nobodyさん [2006/05/29(月) 00:43:18 ID:PDeUAnyO] 開発環境って皆さんEclipse+Trustudioですか? 同じ人がいたら教えてください。 $this->af-> まで入力してafに対応するメソッドを出したいんですが、 Ctrl+Spaceを押してもまったく出てくれません。 $this-> ここまでだったら、いろいろ出るんですが・・・
338 名前:nobodyさん mailto:sage [2006/05/29(月) 11:18:16 ID:???] >>337 Eclipse使ってないけど、変数を型宣言しないPHPでそれは難しいのでは? thisは無条件に現在編集中のクラスのメソッドを持ってこりゃ良いけど、 $this->af-> ってafがどのクラスのインスタンスか判然としないし。
339 名前:nobodyさん mailto:age [2006/05/29(月) 12:00:11 ID:???] ethna.jp/ethna-tutorial-startup-practice1.html に書いてあるようにスケルトンを作成する時って おそらくOSの文字コードに合わせて作成されると思うんですが 例えばOSの文字コードがEUCの時にスケルトンをShift_JISで作成ってのは 無理でしょうか? 下記のように実行すると全てスケルトンがEUCで出来てしまい、 ブラウザでアクセスした時にEUCでないと文字化けしてしまいます。 php /usr/local/lib/php/Ethna/bin/generate_project_skelton.php /tmp sample 何とかShift_JISで作る方法ってありませんか?
340 名前:nobodyさん [2006/05/29(月) 13:46:59 ID:/XQ6rqgj] >>339 スケルトンをSJISにしたらどうでしょうか。試してないけど。
341 名前:340 mailto:sage [2006/05/29(月) 13:50:24 ID:???] あ、ごめんアプリ全体の話か・・・ActionClassなんかの話と勘違いしてました。
342 名前:nobodyさん mailto:sage [2006/05/29(月) 14:42:22 ID:???] Ethna 全体をSJISにコンバートしたらできるんじゃないかな。 UTF8化した人はググるとでてきますよ。
343 名前:nobodyさん mailto:sage [2006/05/29(月) 15:42:37 ID:???] >337 Eclipseは知らんけど、 Ethna_ActionClass.php の、 @var object Ethna_ActionForm ってとこを、 @var Ethna_ActionForm にすればいいような気がしなくもない。
344 名前:339 mailto:age [2006/05/29(月) 17:38:18 ID:???] >>342 thx hetima.com/pblog/article.php?id=135 を見ながらやったら出来ますた
345 名前:nobodyさん mailto:sage [2006/05/29(月) 23:52:12 ID:???] >>342 自分もUTF-8にコンバートして使ってますが無問題ですよ。
346 名前:nobodyさん [2006/06/04(日) 20:37:44 ID:2IZPCYov] UTF-8化してるのですが、ちょっとだけ悩んでます。 ttp://labs.cybozu.co.jp/blog/akky/archives/2006/01/windows_ethna02_1.html この方法でトライしてるのですが、ブラウザから出力されたHTMLの先頭に 数文字のスペースが混入してしまいます。 BOMなしUTF-8に変換→半角スペース5文字が先頭に混入 BOMありUTF-8に変換→半角スペース36文字が先頭に混入 Ethnaを介さないPHPの出力では問題ありません。 自分の知識ではまったく原因が分かりません。 もし、何か分かる方がいましたら教えて下さい。よろしくお願いいたします。
347 名前:nobodyさん mailto:sage [2006/06/05(月) 02:19:28 ID:???] .tplは無問題?
348 名前:nobodyさん mailto:sage [2006/06/05(月) 02:32:29 ID:???] ツールで一括変換してるみたいだけど、すべてのファイルがちゃんと変換されているか確認した? 開始タグ、終了タグの前後、テンプレートにゴミがありそう
349 名前:346 mailto:sage [2006/06/05(月) 14:38:11 ID:???] レスありがとうございます。 >>347 Ethnaをインストールしたときに入ってるindex.tplでも この現象が起きてるので、tplファイル個別の問題ではなさそうです。 もちろんUTF-8にコンバートはしてあります。 >>348 一応、ツール上で最後に変換結果が出て、全部変換されているようです。 いくつかファイルを開いて実際に確認しましたが、ちゃんと変換されてました。 ちなみにさっき、会社の環境でUTF-8化をやってみたところ、この現象は発生しませんでした。 phpやapacheの設定やらバージョンやらコンパイルの設定のせいかな? 今日、OSのインストールからもう一度やってみます。
350 名前:nobodyさん [2006/06/06(火) 16:35:59 ID:ZicQqZjn] >>349 ?> ^^^^^ ここの空行とか...
351 名前:nobodyさん mailto:sage [2006/06/07(水) 03:50:19 ID:???] 2.1.1キタ━━━━━━(゚∀゚)━━━━━━ !!
352 名前:nobodyさん mailto:sage [2006/06/07(水) 10:26:43 ID:???] なんかさぁ〜、Pearからインストールしたら、 /bin以下の 何とか.sh ファイルが無いんだけど。 致命的な勘違いしてる?
353 名前:nobodyさん mailto:sage [2006/06/07(水) 13:05:19 ID:???] なんとかshってなに?
354 名前:nobodyさん mailto:sage [2006/06/07(水) 13:26:00 ID:???] Ethna作ってる藤本さんって、GREEに勤めてるの?
355 名前:352 mailto:sage [2006/06/07(水) 14:21:29 ID:???] >>353 /Ethna/bin/ethna.shです。
356 名前:nobodyさん mailto:sage [2006/06/07(水) 18:40:07 ID:???] >>352 それらは全て無くなって、pearコマンドよろしくethnaコマンドになりました。 ただし、pear形式でインスコしたときだけね。
357 名前:nobodyさん mailto:sage [2006/06/09(金) 10:47:37 ID:???] >>354 gree.jp/?mode=static&act=page&page=ext_recruit_gree-fujimoto 知らんかったんか。
358 名前:nobodyさん mailto:sage [2006/06/10(土) 11:03:41 ID:???] 2.x系の事で教えて欲しいんですが、 1.xで書いたスクリプトは2.x系へ 移行できるの? ひょっとして全部書き直さなきゃいけない? 今リリース前でこれからも開発を継続する サイトがあるんだけど、書き直しが必要なら 思い切ってZendにするか迷い中。 みんな2.x系に移行してる?
359 名前:nobodyさん mailto:sage [2006/06/10(土) 12:24:03 ID:???] >>358 書き直す必要は殆ど無いと思うよ。
360 名前:358 mailto:sage [2006/06/10(土) 21:11:04 ID:???] >>359 ほんとですか。 俄然やる気が出てきたw 実験環境つくって試してみます。
361 名前:nobodyさん [2006/06/11(日) 12:18:38 ID:fVpO3bXE] action_cli ってどうやって使うんですか? $ php action_cli/Hoge.php Fatal error: Class 'Ethna_ActionForm' not found in xxx のようにエラーになります。何か根本的にまちがってる?
362 名前:nobodyさん [2006/06/12(月) 10:27:05 ID:m+/HRqpy] >>361 CLI用のエントリポイントが必要。 cp appid/www/index.php appid/bin/hoge.php してその中のmainをmain_CLIにする。 第二引数に実行するアクションを指定して、 php appid/bin/hoge.php って感じ。 この辺はドキュメントないから最悪だね。
363 名前:nobodyさん mailto:sage [2006/06/12(月) 11:32:42 ID:???] xmlrpc関係もだね。どこで何かいてどうやって値を返すのか・・・。
364 名前:nobodyさん mailto:sage [2006/06/13(火) 00:52:34 ID:???] >362 書いてよ! てきとーに書いとけば、ふじもとさんが直してくれるはず!
365 名前:nobodyさん mailto:sage [2006/06/15(木) 21:11:31 ID:???] すいません。 Ethnaって言うかフレームワーク自体使うの初めてで、チュートリアルの2つ目までいったんですが、表示されるのって遅くないですか? フレームワークってこんな表示に時間掛かるものなんでしょうか。
366 名前:nobodyさん mailto:sage [2006/06/15(木) 23:24:38 ID:???] >>365 そんなことはないと思うけど 同じものをフレームワーク使わずに書いたら早くでる?
367 名前:nobodyさん mailto:sage [2006/06/16(金) 07:39:46 ID:???] 環境とか実行時間とか具体的なこと一切書かずに遅いとかいわれても エスパーじゃないんだから分かるわけないだろうが。
368 名前:nobodyさん mailto:sage [2006/06/16(金) 07:46:28 ID:???] どのフレームワークもコストはあるけど ethnaは軽い方だと思うよ
369 名前:nobodyさん mailto:sage [2006/06/16(金) 17:15:24 ID:???] >>365 まぁ、必要ないものでも色々読み込んでるから多少は仕方ない。 極端に小規模なものには使うメリットはそれほど無いんじゃない? 中規模〜からがフレームワークの本領発揮だと思う。
370 名前:nobodyさん [2006/06/17(土) 23:51:24 ID:+PRU9TY8] サンプルコードをたくさん見たいなぁ。 コードアップする場所とかつくったらいいのに。
371 名前:nobodyさん [2006/06/18(日) 14:15:09 ID:yWQcwCGW] >>370 禿同
372 名前:nobodyさん mailto:sage [2006/06/18(日) 15:07:21 ID:???] Ethna で作られていて ソース公開されているのって何があるの?
373 名前:nobodyさん mailto:sage [2006/06/18(日) 21:57:55 ID:???] 公式に2,3個サンプルがあったけどDL出来なくなってるっぽいね。 あとはMLにいくつか転がっているよ。 でも、全然少ないからUPとか紹介とか出来るような場所がほしいね。
374 名前:nobodyさん mailto:sage [2006/06/19(月) 10:26:39 ID:???] haltさんのコードはマニアックな使い方してるからなぁ。 ごく普通の、フォーム入力→DBから読み出し→ページ出力→フォーム入力→DB書き出し→ページ出力みたいなのが見たい。
375 名前:nobodyさん mailto:sage [2006/06/19(月) 18:08:36 ID:???] ethna.jp/ が Wiki だから 新規ページを作って追加したら?
376 名前:nobodyさん mailto:sage [2006/06/19(月) 23:26:44 ID:???] wiki.riaf.org/kinowiki?n=240 こんなんでも参考になります? すごい適当なんだけど、一応>>374 の書いてることは実装してるかな?? あ、でも、仲間内用に作ったから、セキュリティとかあんまり考えてないとこあるかもです。
377 名前:nobodyさん mailto:sage [2006/06/19(月) 23:47:31 ID:???] >>376 サンクス!
378 名前:nobodyさん mailto:sage [2006/06/20(火) 21:42:43 ID:???] >>376 うごかない。。
379 名前:nobodyさん mailto:sage [2006/06/21(水) 00:06:17 ID:???] スキーマはなし?
380 名前:376 mailto:sage [2006/06/21(水) 01:27:43 ID:???] ぶは… 書いておきました。。 wiki.riaf.org/kinowiki?n=240
381 名前:nobodyさん mailto:sage [2006/06/21(水) 01:58:14 ID:???] gjgj
382 名前:nobodyさん mailto:sage [2006/06/21(水) 10:06:11 ID:???] >>376 $ lha -x ez_siteadmin.lzh LHa: Fatal error: Unknown level header ってエラーで解凍できないけどなんでかな?
383 名前:nobodyさん mailto:sage [2006/06/21(水) 16:55:37 ID:???] リファラが2chばかりではないか
384 名前:nobodyさん mailto:sage [2006/06/21(水) 18:30:16 ID:???] 皆さんEthnaを2系にバージョンアップするときはどうしてます? 1.既存サイトでpearコマンドを利用してアップデート 2.新規サイトを用意してクリーンインストール+同名でプロジェクト作成+古いスクリプトを展開 今のところ2で行く予定なんですが、1でも大丈夫ですかね? 経験者の方いらっしゃいませんか。
385 名前:nobodyさん mailto:sage [2006/06/23(金) 16:11:30 ID:???] symphonyつかえばいいのに
386 名前:nobodyさん mailto:sage [2006/06/23(金) 17:27:41 ID:???] シンポニーってw
387 名前:nobodyさん mailto:sage [2006/06/23(金) 17:58:16 ID:???] よそのFWスレまで来て布教ご苦労様です
388 名前:nobodyさん mailto:sage [2006/06/23(金) 18:03:35 ID:???] symfonyはあるけど symphonyはないから 別の何かだろう
389 名前:nobodyさん mailto:sage [2006/06/23(金) 18:29:13 ID:???] guessworkって結構楽チンだねー goodjob.boy.jp/chirashinoura/detail/id/78.html
390 名前:nobodyさん [2006/06/24(土) 03:49:03 ID:XSR1obdz] 名前がアウト
391 名前:nobodyさん mailto:sage [2006/06/24(土) 12:40:33 ID:???] >>386 、>>388 お前らは名前の由来の一般英単語も知らんのか。。。 これだから中卒ドキュソは・・・
392 名前:nobodyさん mailto:sage [2006/06/24(土) 13:10:29 ID:???] >>391
393 名前:nobodyさん mailto:sage [2006/06/24(土) 13:18:31 ID:???] >391 良かったな辞書を持ってて。
394 名前:nobodyさん mailto:sage [2006/06/24(土) 23:27:01 ID:???] >>393 うん、電子辞書便利だよ〜(^^)
395 名前:sage [2006/07/01(土) 03:09:03 ID:YtTgigq9] appObjectって使ってます?
396 名前:nobodyさん mailto:sage [2006/07/01(土) 18:32:55 ID:???] 使ってます。
397 名前:nobodyさん mailto:sage [2006/07/02(日) 00:52:57 ID:???] 使ってないです。
398 名前:nobodyさん mailto:sage [2006/07/02(日) 01:10:49 ID:???] 使ったり使ってなかったり。
399 名前:nobodyさん mailto:sage [2006/07/09(日) 00:17:17 ID:???] Ethnaの2.1.2入れてみた。 cli用のディレクトリがあったけど、どこかにサンプル無いかな。
400 名前:nobodyさん mailto:sage [2006/07/12(水) 10:30:00 ID:???] 手取り足取り、どこでどうやれば良いか ご教授頂きたいです。
401 名前:nobodyさん mailto:sage [2006/07/12(水) 10:42:46 ID:???] >>400 チュートリアルでもやったら?
402 名前:nobodyさん mailto:sage [2006/07/12(水) 12:48:18 ID:???] ttp://ethna.jp/pipermail/users/2006-July/000396.htmlのことっしょ
403 名前:nobodyさん mailto:sage [2006/07/12(水) 12:59:51 ID:???] すごい内容だなぁ。 こういう人がどうやってEthna使ってみようと思うのだろうか?
404 名前:nobodyさん [2006/07/16(日) 08:55:24 ID:qmXQomWm] appObject使ってない人はO/R何使ってんの?
405 名前:nobodyさん mailto:sage [2006/07/16(日) 11:11:03 ID:???] >>404 AppObject使う利点は、すでにActionFormとの連携ができてるところだけだから、 自前のActionForm extends Ethna_ActionFormを作って、その部分を解決すれば なんでも使えると思う。 Ethnaはその辺の自前拡張性が楽でいいね。
406 名前:nobodyさん mailto:sage [2006/07/17(月) 23:31:12 ID:???] >>405 >Ethnaはその辺の自前拡張性が楽でいいね。 別にethnaに限った話でもない
407 名前:nobodyさん mailto:sage [2006/07/22(土) 17:28:06 ID:???] AppManagerのクラス内から $db =& $this->backend->getDB(); のようにDBを呼び出そうとすると Fatal error: Call to a member function getDB() on a non-object って怒られちゃうんだけど。 どうやったDBを呼び出せるの? 使い方間違ってる?
408 名前:nobodyさん [2006/07/22(土) 17:33:53 ID:GB10SsDy] たしか $this->db でいきなり使える。
409 名前:nobodyさん mailto:sage [2006/07/22(土) 19:56:51 ID:???] ありがッツゥーゾ でけたす
410 名前:nobodyさん mailto:sage [2006/07/23(日) 18:04:46 ID:???] actionやviewから $smarty->is_cached とか使いたいんだけど、どげんすればよいとですか?
411 名前:nobodyさん mailto:sage [2006/07/23(日) 18:33:26 ID:???] Ethna_ControllerのgetTemplateEngine()呼び出せば? 2.3.0からobsoleteだけど。
412 名前:nobodyさん mailto:sage [2006/07/23(日) 20:39:01 ID:???] >>411 挙動は変わったけどobsoluteではなくね?
413 名前:nobodyさん mailto:sage [2006/07/24(月) 10:52:32 ID:???] changesに「Ethna_Controller::getTemplateEngine()はobsoleteとなりますので今後はEthna_Controller::getRenderer()をご利用ください」ってかいてあるよ
414 名前:410 mailto:sage [2006/07/25(火) 19:41:00 ID:???] >>411-413 まだ試してませんができそうなんですね。 ありがとうございました。
415 名前:nobodyさん mailto:sage [2006/07/26(水) 06:20:07 ID:???] >>411 obsolete obsolete obsolete obsolete
416 名前:nobodyさん [2006/07/26(水) 18:31:39 ID:fkuJrgoL] すいません、かなり下らない事かも知れないんですが、セッション時に$form.hogeで値は取り出せないんでしょうか。。
417 名前:416 mailto:sage [2006/07/26(水) 20:00:48 ID:???] すいません。 初歩的なミスが原因でした。。
418 名前:nobodyさん mailto:sage [2006/07/28(金) 10:53:29 ID:???] EthnaでRailsみたいなスマートURLは使えますか?
419 名前:nobodyさん mailto:sage [2006/07/29(土) 09:16:44 ID:???] つかえる
420 名前:nobodyさん mailto:sage [2006/07/31(月) 23:09:52 ID:???] テンプレートにObject型を渡して表示させるには、 どのような手続きをとれば良いのでしょうか? ActionFormを利用してstringsやarrayは渡せるみたいなのですが、 オブジェクトが分かりません。
421 名前:nobodyさん mailto:sage [2006/07/31(月) 23:58:43 ID:???] setAppNEでできなかったっけ。
422 名前:nobodyさん mailto:sage [2006/07/31(月) 23:59:42 ID:???] ちなみに、*NEつけるとエスケープなしね。
423 名前:nobodyさん mailto:sage [2006/08/01(火) 01:47:11 ID:???] >>422 なるほど、ありがとうございます。 自前でエスケープすればいいんですね。
424 名前:nobodyさん mailto:sage [2006/08/01(火) 02:07:13 ID:???] 420です、たびたび申し訳ありません。 試してみました。 object(test)#12 (2) { ["name"]=> string(6) "なまえ" ["value"]=> string(6) "あたい" } という内容のオブジェクト$testを $this->setAppNE('test',$test); として tpl側で {$app.test->name} {$app.test->value} としても何もでてこないのですが、設定の仕方がわるいでしょうか・・
425 名前:nobodyさん mailto:sage [2006/08/01(火) 02:10:39 ID:???] afを書き忘れてしまいました。 $this->af->setAppNE('test',$test);が正しいです。 これでもやはり何も表示されません。
426 名前:nobodyさん mailto:sage [2006/08/01(火) 03:11:01 ID:???] >>425 tpl側で {$app_ne.test->name} {$app_ne.test->value} あと自前でエスケープ処理を書くより Ethna_Util::escapeHtml の方がよくね
427 名前:nobodyさん mailto:sage [2006/08/01(火) 08:04:28 ID:???] ここに書くようなことではないんだけど、関係者が見ていることを期待して。 第1回OnlineミーティングのIRCログってどこにありますか? ttp://ethna.jp/ethna-community-topic-online-meeting_20060720.html
428 名前:nobodyさん mailto:sage [2006/08/01(火) 09:10:48 ID:???] >>426 ありがとうございます。できました・・! Ethna_Util::escapeHtmlというのが用意されているんですね。 勉強になります。
429 名前:nobodyさん mailto:sage [2006/08/06(日) 13:06:54 ID:???] Ethna は携帯サイト用の機能を用意しないの?
430 名前:nobodyさん mailto:sage [2006/08/06(日) 15:45:40 ID:???] そのうちじゃないの
431 名前:nobodyさん [2006/08/11(金) 18:27:52 ID:M/sj5kXS] Ethna2.1.2 + ADOdb + PostgreSQL でやってる人いたらおしえて この組み合わせで AppObject使うの危険ですか?
432 名前:nobodyさん mailto:sage [2006/08/12(土) 12:07:59 ID:???] MySQLしか使えないよ。
433 名前:nobodyさん mailto:sage [2006/08/12(土) 12:08:40 ID:???] というわけで、Ethnaは使いづらいです。
434 名前:nobodyさん mailto:sage [2006/08/13(日) 19:49:07 ID:???] 他のO/R使えばいいやん
435 名前:nobodyさん mailto:sage [2006/08/13(日) 19:58:22 ID:???] O/Rマッパなんていらん
436 名前:nobodyさん mailto:sage [2006/08/13(日) 21:53:49 ID:???] たしかに0/Rマッパなんてなくてもかまわないよね。 それにフレームワーク自体もなくてもかまわいない。
437 名前:nobodyさん mailto:sage [2006/08/14(月) 00:02:42 ID:???] >>436 そうだな。それからおまえもいなくてもかまわない。
438 名前:nobodyさん mailto:sage [2006/08/14(月) 03:20:45 ID:???] 喧嘩はやめて! セックスしなよセックス!セックス!
439 名前:nobodyさん mailto:sage [2006/08/17(木) 13:54:56 ID:???] 次バージョン マダー
440 名前:nobodyさん mailto:sage [2006/08/17(木) 22:57:32 ID:???] ethna.jp/ethna-document-dev_guide-form-filter.html 上記の通りやっているんですが、上手くいかないんですが間違ってませんよね。。 試しに送られてきた値に文字列を追加してみたんですが上手くいかないのですが。。
441 名前:nobodyさん mailto:sage [2006/08/17(木) 23:17:22 ID:???] 如何上手くいかないのかぐらいかけ
442 名前:nobodyさん mailto:sage [2006/08/17(木) 23:43:41 ID:???] >>441 と言われてもそのままなんですが。。
443 名前:nobodyさん mailto:sage [2006/08/18(金) 00:01:34 ID:???] >>442 ……(;゚Д゚)ポカーン
444 名前:nobodyさん mailto:sage [2006/08/18(金) 03:54:08 ID:???] じぁあ、エスパー呼んでこい
445 名前:nobodyさん mailto:sage [2006/08/18(金) 04:51:10 ID:???] actionじゃなくてviewの方でsessionの値を得るにはどうしたらいいんでしょうか?
446 名前:nobodyさん mailto:sage [2006/08/18(金) 08:03:49 ID:???] sessionオブジェクトを取得しろ
447 名前:nobodyさん mailto:sage [2006/08/18(金) 08:34:54 ID:???] >>446 えと、それはどうすればいいんでしょうか?
448 名前:nobodyさん mailto:sage [2006/08/18(金) 10:22:07 ID:???] 基底クラスのコンストラクタくらい見ようよ
449 名前:447 mailto:sage [2006/08/18(金) 18:04:51 ID:???] /app/view/hoge1/hoge2/hoge.phpで extends Ethna_ViewClass したクラスの中で $Serial= $this->session->get('hogeSerial'); として、セッションからユーザシリアルを取得しようとしてるんですけど Fatal error: Using $this when not in object context in hoge.php line ... とエラーがでるんです。 環境はwin2k、apache2.x、php5.x でやってますけど、何が悪いのかわかりません。 ヒントだけでも教えてください
450 名前:nobodyさん mailto:sage [2006/08/18(金) 19:34:37 ID:???] sessionオブジェクト取ってこいや
451 名前:nobodyさん mailto:sage [2006/08/18(金) 19:38:09 ID:???] $_SESSION使えや
452 名前:447 mailto:sage [2006/08/18(金) 20:04:50 ID:???] >>450 >>449 の方法でとってることになりません? >>451 それだとEthna使ってる意味が半減?
453 名前:nobodyさん mailto:sage [2006/08/18(金) 21:05:10 ID:???] var_dump($this->session)してみろや
454 名前:447 mailto:sage [2006/08/18(金) 21:25:07 ID:???] >>453 Fatal error: Using $this when not in object context in hoge.php line ... と同じエラーがでます。
455 名前:nobodyさん mailto:sage [2006/08/18(金) 22:08:39 ID:???] 本当にPHP5か?4じゃねぇの?
456 名前:nobodyさん mailto:sage [2006/08/18(金) 22:22:50 ID:???] winXP、apache2.x、php5.x だけどそんなエラーでませんな。 backendからセッションオブジェクトとってきて使ったらどうですか。
457 名前:nobodyさん mailto:sage [2006/08/18(金) 22:25:06 ID:???] あー、staticなメソッドから$this呼んでねぇか?
458 名前:nobodyさん mailto:sage [2006/08/19(土) 16:51:46 ID:???] オブジェクト指向を勉強するには丁度いいかも。
459 名前:nobodyさん mailto:sage [2006/08/23(水) 20:31:42 ID:???] コントローラーから呼びだすコンポーネント(Ethna_AppManagerを継承していない素のクラス)にDBのコネクションを持たせたいのだがEthnaの持っているコネクションを渡す方法って引数しかない? Singletonとかの形でコネクションを持っているところがあるといいんだけど
460 名前:nobodyさん mailto:sage [2006/08/26(土) 23:37:48 ID:???] DBget!!!ズサ━━━━⊂(゚Д゚⊂⌒`つ≡≡≡━━━━!! ってやりゃいいじゃん
461 名前:nobodyさん mailto:sage [2006/08/28(月) 06:50:58 ID:???] {include file="header.tpl"} 〜〜〜 {include file="footer.tpl"} 毎回書くのが激しく面倒で、何か良い方法が無いものか少し検索。 ↓同じような事考えた人ハケーン ttp://d.hatena.ne.jp/tadito/20060415/1145115774 ページ下部:Smartyのここが 何か方法はありませんでしょうか。
462 名前:nobodyさん mailto:sage [2006/08/28(月) 14:10:42 ID:???] Smartyのプリフィルタプラグインで出来るんじゃない?
463 名前:nobodyさん [2006/08/28(月) 16:19:13 ID:WBoTQIam] 質問ですが・・・。 tplファイルで配列を表示させる方法を教えてくれませんか。 setAppだと通常の変数しか定義出来ない・・・ ↓こんな感じに書いて、array data にテーブルhogeの一覧を格納したいのです。これだと動かないですけど。 function preforward() { $db =& $this->backend->getDB(); $result =& $db->query("select * from hoge"); $i = 0; while ($data[$i] = $result->fetchRow()) { $this->af->setApp("data[]", $data[$i] ); $i++; } }
464 名前:nobodyさん mailto:sage [2006/08/28(月) 16:40:35 ID:???] >>463 >setAppだと通常の変数しか定義出来ない・・・ そんなことはなくて、普通に配列が格納された変数を渡せばいいだけ。
465 名前:nobodyさん [2006/08/28(月) 16:55:38 ID:WBoTQIam] >>464 これで動きました。ありがとうございます。 while ($data[$i] = $result->fetchRow()) { $i++; } if ( $i > 0 ) { $this->af->setApp("data", $data ); }
466 名前:461 mailto:sage [2006/08/28(月) 21:08:49 ID:???] >>462 プリフィルタ書いてやってみる事にします。ありがとうございました
467 名前:nobodyさん mailto:sage [2006/08/29(火) 00:49:44 ID:???] 俺ならskelのテンプレに{include}書いちゃって、 ethna add-template hoge するかな。
468 名前:nobodyさん mailto:sage [2006/08/29(火) 02:17:54 ID:???] 俺の場合まずレイアウト用テンプレートを用意して Ethna_ViewClassをextendsして forward()でforward_pathをレイアウト用テンプレートのパスに置き換えて 元のforward_pathをsetAppしてレイアウト用テンプレートで {include file=$app.forward_path} とか出来るようにする感じかな んでレイアウト管理マネージャ作って $Layout->disable();とか$Layout->set('admin');とか出来るようにしてる
469 名前:nobodyさん [2006/08/29(火) 08:11:57 ID:yZ1+igoY] Ethnaを使い始めたんですが、サイトを構築しているうちに 静的なコンテンツが半分以上だということが分かりました。 1つのビューに対しては、1つ以上のアクションが必要なので たとえば、サイトの説明ページを1ページ増やすたびに 何もしないアクションを追加していかなければいけないと 思うのです。これは、そういうものだと諦めるしかないので しょうか? これまではフレームワークを使っていなかったので、Web デザイナーさんに会員認証などの処理を含んだPHPテンプ レートを渡して、ある程度自由に書いてもらっていたのですが、 アクションを追加しないとページの追加などができないのは 結構厳しいです。
470 名前:nobodyさん mailto:sage [2006/08/29(火) 17:52:14 ID:???] CMSを作れば
471 名前:nobodyさん mailto:sage [2006/08/29(火) 22:15:22 ID:???] >>469 自分も今似たような状況にある。 なんとか効率よくテンプレートだけを使用できないかなと思ったけど 結局、静的(半静的)用のテンプレート周りだけEthnaと切り離してやることにした。 ちなみに、↑の半静的ページっていうのは、認証結果なんかも全部必要ないページね。 認証結果や他のEthnaと結構かかわってくるようなページは全部Ethna通してる。
472 名前:nobodyさん mailto:sage [2006/08/30(水) 00:01:26 ID:???] いやだからCMSを作れば
473 名前:nobodyさん mailto:sage [2006/08/30(水) 08:24:36 ID:???] っつーか、静的コンテンツ表示用の共通アクションを1つ作ればよいだけでは。 他のパラメータでビュー指定して。
474 名前:nobodyさん mailto:sage [2006/08/30(水) 13:01:47 ID:???] マネージャーとか必要ないのは読み込ませたくないんじゃない?
475 名前:nobodyさん mailto:sage [2006/09/03(日) 21:48:10 ID:???] いまオープンのEthnaつかったCMSはriafさんが作ってるez_siteadmin(easa?)くらいしかないのかな labs.riaf.org/easa/ wikiが見れなくなってるけど ほかにもいろいろサンプルが見たい
476 名前:nobodyさん mailto:sage [2006/09/04(月) 00:20:13 ID:???] EthnaはデフォルトでXSS可能なのがどうもね。 サンプルでXSS可能なものが多いし。
477 名前:nobodyさん mailto:sage [2006/09/05(火) 21:37:08 ID:???] Ethna_Plugin_Logwriter_File.php に手を入れたいのですが、 例えばEthna_Plugin_Logwriter_Fileを継承して 自分で書いたコードでオーバーライドしたとして そのclassをどういう手続きを踏めば、 使えるようになるのか、だれか教えてちょうだい。
478 名前:nobodyさん mailto:sage [2006/09/06(水) 07:57:33 ID:???] そのクラスのオブジェクトを生成すれば使えるようになるわけだが。
479 名前:477 mailto:sage [2006/09/06(水) 14:57:37 ID:???] おっしゃる通りなのですが、、、 元のLoggerって生成することなど意識せずとも使えます。 自作のものも生成することなく元のLoggerと置き換わるような 形で使いたいのです。 Controllerの $class_default['logger']を自作のものに書き換えればよいのでしょうか?
480 名前:nobodyさん mailto:sage [2006/09/06(水) 16:21:52 ID:???] Controllerの$class
481 名前:477 mailto:sage [2006/09/06(水) 16:38:38 ID:???] Controllerの$class コメントのTODOにずばり書いてあった。。。OTL
482 名前:nobodyさん mailto:sage [2006/09/06(水) 20:20:01 ID:???] PHP5.0のEthnaの2.1.2ですけど、AppObjectでgetしたあとremoveすると $conditionがNULLでWHERE IS NULLとかいうSQLになっちゃう...。 $key, $key_type付きでwhere付きのgetはできるのに、getせずにインスタンスしたそのままでremoveしてもかわらず... 皆さんはちゃんとうごいてます?
483 名前:nobodyさん mailto:sage [2006/09/07(木) 00:23:32 ID:???] >>482 なんかよくわからないけど、いままで変な挙動したこと無いから何か間違ってると思う。 AppObjectでgetしたっていうのがよくわからない。 AppManagerでgetObjectPropとかgetObjectListとかじゃなくて? AppObjectでgetするのは、AppObjectのpropだけだよね。 新しく作りたいならnewだし。
484 名前:482 mailto:sage [2006/09/07(木) 16:25:20 ID:???] わかりづらかったですね、ご迷惑おかけしまいた... $key_type = array('userid', 'config'); $key = array($userid, $config); $config1 =& new Test_Config1($this->backend, $key, $key_type); $data['config'] = $config->get('config'); //$data処理 $config2_values = array( 'userid' => $config->get('userid'), 'config' => $data['config'], ); $config2 = new Test_Config2($this->backend, NULL, NULL, $config2_values); $config2->add(); $config1->remove(); とすると クエリエラー SQL[DELETE FROM config1_tbl WHERE IS NULL] のエラーで返されます
485 名前:483 mailto:sage [2006/09/07(木) 19:29:19 ID:???] これだと、オブジェクトを2個作らないで$config1->update();の方がいいと思うけど、 まぁそれはおいといて。 $config2->add(); するなら、 $config2 = new Test_Config(&$this->backend); $config2->set('userid', $user_id); $config2->set('config', $data['config']); $config2->add(); する方が良い。なぜなら、AppObjectをnewするときの第4引数は 全てのプロパティをセットする必要があるからな。2つのプロパティじゃなければ面倒でしょ? あと、$config1->remove();でWHERE IS NULLは、Test_Config1の primary_keyがAppObjectでちゃんと設定されて無いと思われる。 もう一度、appobjectのMappingをチェックするのが吉と、
486 名前:nobodyさん mailto:sage [2006/09/07(木) 22:55:15 ID:???] $config1 = new してるのに何故 $config->get() typo?
487 名前:nobodyさん mailto:sage [2006/09/08(金) 10:48:28 ID:???] トランザクションや複数テーブルを使用するときなどに どうしても生SQLを発行する場面があると思うのですが、 AppObjectを使ったりSQLを書いたりするコードが混ざっていると 気持ち悪い(というか不適切なコード?)な気がします。 実際にEthnaを使っている方はどうされているんでしょうか?
488 名前:nobodyさん mailto:sage [2006/09/09(土) 00:40:11 ID:???] >>487 俺の場合、どうしても生SQLのときは、ManagerにSQL発行メソッドを作るかな
489 名前:nobodyさん mailto:sage [2006/09/09(土) 18:41:06 ID:???] controllerにsmartyのプラグインを登録できるのはわかってるけど、 どこに記述したいいのか、どこにファイルを置けばいいんでしょう? どこに書いても、libやappにおいてもだめだし 携帯向けにsjisのページが作りたいとおもったけど開発ページにはoutputをどこにおいたらいいの書いてない...
490 名前:nobodyさん mailto:sage [2006/09/10(日) 08:05:27 ID:???] >>489 もちろん、ここはチェックしたよな www.ethna.jp/ethna-document-dev_guide-app-sjis.html
491 名前:nobodyさん mailto:sage [2006/09/10(日) 19:35:53 ID:???] まことにすいませんが、事故解決しました、お手数おかけしました。 原因はIncludeパスがずれてたみたいです。 そこはみたんですけど、そのfunctionはどこに書いてどこにおいたらいいのかわからなくて。
492 名前:nobodyさん mailto:sage [2006/09/15(金) 01:32:45 ID:???] そろそろ2.3.0 preview3出てほしいなぁ。 ロードマップでは未到達かもしれないけど、コンスタントに リリースしてくれたほうが嬉しい。というか、はやく2.1.2から 乗り換えたいので頼んます。。。
493 名前:nobodyさん mailto:sage [2006/09/19(火) 08:05:38 ID:???] mixi の雑談でpreview3は、9月末でるかも、らしい
494 名前:nobody [2006/09/19(火) 15:05:49 ID:l653wI+U] Ethna + Ajax のサンプル動作させ方がわかりません。 以下のサンプル通りにスクリプトを書いて動作させたけど、 json.tplがないよと怒られます。 流れとして、actionのFlare_Action_IndexCheckからviewのFlare_View_Jsonまでは、 分るけど、この先どこの.tplに、いくの? labs.gree.jp/Top/Document/20060707.html ヒント頂戴。
495 名前:nobodyさん mailto:sage [2006/09/19(火) 17:21:16 ID:???] Ethnaで出力結果を(html形式のファイルに)書き出す為の 専用のmethodはないのでしょうか? Ethna_RendarerのgetEngineとかいうのを使ってfetchするしかないのでしょうか?
496 名前:nobodyさん mailto:sage [2006/09/19(火) 22:32:04 ID:???] ethna.jp/ethna-document-tutorial-practice3.html で tp://some.host/~foo/?action_login=trueというようにアクセスしてる場面を見受けるけどこれを tp://some.host/~foo/loginみたいな形式に変えることは出来ないんかなぁ?
497 名前:nobodyさん [2006/09/19(火) 22:37:17 ID:R6sen3Jl] >>495 そのメソッドは無いね。 フィルタ使ってob_で拾うとか、いろいろ手段はあるけど。 >>496 mod_rewrite使えば可能。
498 名前:nobodyさん mailto:sage [2006/09/19(火) 23:22:06 ID:???] >>496 Ethna_Controller.php の ChangeLog にこんなのがある。 > Ethna_UrlHandlerクラスを追加(ステキurl対応) これに期待する。
499 名前:nobodyさん [2006/09/19(火) 23:27:54 ID:gBF89jCS] エラーのハンドリングについて、指定したテンプレートが見つからない 場合と、データベースに接続できなかった場合のエラー処理って どこで行えばいいのでしょうか? どちらもフレームワークに任せてしまっている部分の処理なので いまいち解りません…orz 環境はPHP 5.1.6 + Ethna 2.3.0-dev(CVS)です。
500 名前:nobodyさん mailto:sage [2006/09/19(火) 23:39:38 ID:???] >>494 試してないので恐縮ですが、json.tplを出力しようとしている ということは、Flare_View_Jsonクラスのforward()をオーバー ライドしていないのではないでしょうか?
501 名前:496 mailto:sage [2006/09/20(水) 00:53:00 ID:???] >>497 mod_rewriteを使えば確かに出来そうですね 何とかEthnaで頑張ってみたかったので wasuren.blog67.fc2.com/blog-entry-17.html を参考にしながらやってみたんですが どうもうまく動かない。・゚・(ノД`)・゚・。 ちなみに公式に書いてある ethna.jp/ethna-document-dev_guide-action-formname.html は問題なく出来ますた。(・∀・)
502 名前:nobodyさん [2006/09/20(水) 14:30:41 ID:Ni5iDH7a] デフォルトのテンプレートディレクトリをja以外にするにはどこに書くのが正しいですか?
503 名前:nobodyさん mailto:sage [2006/09/20(水) 14:55:50 ID:???] >>502 App_Controller::getTemplatedir
504 名前:nobodyさん mailto:sage [2006/09/20(水) 16:30:50 ID:???] >>494 間違えて、preforwardにコードを書いていません?
505 名前:nobodyさん mailto:sage [2006/09/20(水) 18:30:04 ID:???] >>503 ありがとうございまっす
506 名前:nobodyさん mailto:sage [2006/09/20(水) 22:54:15 ID:???] >>505 あんたopenPNEの人? その語尾がキモイ。
507 名前:nobodyさん mailto:sage [2006/09/20(水) 23:13:16 ID:???] >>506 すみませっん
508 名前:nobodyさん mailto:sage [2006/09/20(水) 23:29:08 ID:???] >>507 どういたしましって
509 名前:nobodyさん mailto:sage [2006/09/20(水) 23:55:52 ID:???] >>508 こっちらこそ
510 名前:nobodyさん [2006/09/21(木) 04:53:57 ID:uR4E3gkh] ありがとうございまつw
511 名前:sage [2006/09/21(木) 19:25:16 ID:amkCKdmG] >>500 >>504 ご指摘ありがとうございます! ご指摘どおりpreforward()をオーバライドしていました。 ですが、forward()に書き直して見ましたが、駄目でした。 メールアドレスにタイプしても、なにもエラーが表示されません。 onkeyup='alert("key Up");'なら動作するのでjavascript自体は問題なさそうです。 ためしに、Flare_View_Jsonのforward()でprint_r($json_object)と記述して、 送信ボタンをクリックすると意図したエラーが表示されるのですが、 上記を記述しないと、Web画面上は真っ白が表示されます。 ※/etc/flare-ini.php で 'debug' => 'true'としてます。 う〜〜ん、ヘルプ プリーズ。
512 名前:nobodyさん mailto:sage [2006/09/21(木) 22:02:04 ID:???] cli以外でスケルトン作成できんとですか? phpeditor使いたいとです
513 名前:nobodyさん mailto:sage [2006/09/22(金) 00:20:14 ID:???] cliでのスケルトン作成に何か不満が? まぁスケルトン参考にして、必要な物を自分で用意すればいいじゃないか
514 名前:nobodyさん mailto:sage [2006/09/22(金) 13:12:23 ID:???] フォーム画面->確認画面->処理 という流れのアクションが30個ほどあります。 確認処理が地味にうざいのですが、 確認画面の部分を30個分テンプレ用意する方法と、 確認画面の部分を変数に入れて1つのテンプレから動的に確認画面を表示 させる方法を思いつきました。 できれば後者で行こうと思いますが、 もっと良い方法やスマートな記述法があれば教えてください。 また、今回のような場合に使えるメソッドはないでしょうか?
515 名前:nobodyさん mailto:sage [2006/09/23(土) 13:04:01 ID:???] なんでEthnaのテンプレートディレクトリはtemplate/ja なの? ja
516 名前:nobodyさん mailto:sage [2006/09/23(土) 13:42:38 ID:???] ja がなければないで動くから、ja ディレクトリ消してる。
517 名前:nobodyさん mailto:sage [2006/09/23(土) 14:00:20 ID:???] どうしてjaってディレクトリを用意してあるのかが気になるんですが
518 名前:nobodyさん mailto:sage [2006/09/23(土) 14:34:34 ID:???] 全世界言語対応をにらんでる
519 名前:nobodyさん mailto:sage [2006/09/23(土) 17:47:51 ID:???] CVSリポジトリに久々にコミットがあったぽいね。 preview3を待ち望んでる身としては嬉しい限りだけど 9月末に出てくれるかな。。。
520 名前:nobodyさん mailto:sage [2006/09/23(土) 23:15:08 ID:???] 画面からフォーム値を取得するのに、わざわざActionFormの中に記述するのが面倒なんですが なんとかならないんでしょうか?
521 名前:nobodyさん mailto:sage [2006/09/23(土) 23:22:39 ID:???] >>520 記述するのが面倒ならASP.NET+Visual Studio使ってみてはいかがでしょうか? 一考の価値はあるかと。 EthnaEditorってのもあるけど。
522 名前:nobodyさん mailto:sage [2006/09/24(日) 00:57:44 ID:???] ASPはちょっと・・・・ コピペでがんばります。ありがとう
523 名前:nobodyさん mailto:sage [2006/09/24(日) 01:10:47 ID:???] >>520 setFormVars()をオーバーライドするとか。 mod_rewriteでCoolURIにしてるんだけど、POSTだと$_POSTの内容しか 取得しないので、自分で追加してる。 $_REQUESTから全部取らないのってメモリ節約のため? それとも指定以外のフォーム値は受け取らないというセキュリティへの配慮? 意図しないフォーム値は使わないだけだから、とりあえず全部格納しても 問題なさそうだけど、理由があるなら教えて偉い人。
524 名前:nobodyさん mailto:sage [2006/09/24(日) 02:35:31 ID:???] session値をDBに格納したいんですが >>290 よりスマートな方法ないでしょうか?
525 名前:nobodyさん mailto:sage [2006/09/24(日) 11:27:27 ID:???] preview3では是非、?action_(アクション名)=trueを/(アクション名)という形式でアクセスしたいもんだ
526 名前:nobodyさん mailto:sage [2006/09/24(日) 22:00:35 ID:???] >> 525 なんでそんなのを標準にしたいのかはわからんが、今でも _getActionName_Form()の上書きでできるし、 CVSではUrlHandlerも追加されてるぞ?
527 名前:nobodyさん mailto:sage [2006/09/25(月) 00:12:30 ID:???] >>525 その方法が標準になった場合って、サブミットボタンでアクションを振り分けるのって できなくなるよね?あったら教えてください。 perform() { if ($this->af->get('submit_action_a'){ ......... } else if ($this->af->get('submit_action_b'){ ......... } } とかは無しね。もしかして、それでアクションチェーンがどうたらとか 言ってる奴らがいるのかな?
528 名前:nobodyさん mailto:sage [2006/09/25(月) 10:54:53 ID:???] >>525 つmod_rewrite
529 名前:nobodyさん mailto:sage [2006/09/25(月) 15:06:44 ID:???] まあスマートルータは流行りだから そのうちEthnaにも取り入れられると思うよ
530 名前:nobodyさん mailto:sage [2006/09/26(火) 21:09:48 ID:???] Ethnaのサンプルみたんですが、DBにアクセスするクラスは複数のActionから参照されるような つくりをしていましたが、Action別にそれぞれ用意したほうが分かりやすくないですかね? みなさんはどうやってますか?
531 名前:nobodyさん mailto:sage [2006/09/26(火) 21:15:44 ID:???] >>530 そっちの方がありえないだろ
532 名前:nobodyさん mailto:sage [2006/09/26(火) 21:36:20 ID:???] >>531 どっちほうがありえない?
533 名前:nobodyさん mailto:sage [2006/09/27(水) 09:47:21 ID:???] Action別に作った場合に、単純に変更作業の時に コードがばらけていて面倒とかはあると思いますよ。 オブジェクト指向の勉強とかするといいと思いますよ。 (語れる程詳しくは無いので、語らないですけどw)
534 名前:nobodyさん mailto:sage [2006/09/27(水) 13:42:42 ID:???] Ethnaはオブジェクト指向を勉強するきっかけとしてはなかなかいいかもしれないね。
535 名前:nobodyさん mailto:sage [2006/09/28(木) 08:14:17 ID:???] 逆に、複数のActionで同じ処理が使われている場合、変更があったときに すべての使用されているActionを見直さないといけないっていう問題がでると思うんですよね。 こういうのって画面単位で分担作業するものだから、お互いに変更時に支障がないように 作るものなんじゃないかなぁ。
536 名前:nobodyさん mailto:sage [2006/09/28(木) 09:36:33 ID:???] 「想定していなかった新機能を追加」とかでもやらない限りそんな大きな仕様変更はやらんでしょ それがどんな作りなのかは分からんけど、どうしても回避出来ないよっぽどの理由がない限り共用にしとくのが無難
537 名前:nobodyさん mailto:sage [2006/09/28(木) 22:07:34 ID:???] >>536 そうなのかぁ ということはいろんな処理に使えるようにSQLはなるべくシンプルな処理にしておくのが無難なのかな 複数Joinとかして、1つの画面に必要なデータをいっぺんにとってくることもできるけど、 ほかの画面では不要なものが多すぎて使えないってこともあると思うし。 なんか微妙だけど、共通化(オブジェクト指向ではない)しようと思います。 ありがとうございました。
538 名前:nobodyさん mailto:sage [2006/09/29(金) 01:56:32 ID:???] >>537 1年前の俺みたいだ。w あと半年ほど使いまくってEthnaで10個くらい同じことやれば 「あー、この辺共有か」とか分かると思う。 自分はもうEthna使わないでPHPって書いてないからな。
539 名前:nobodyさん mailto:sage [2006/09/30(土) 18:02:23 ID:???] 他は満足してるんだけども Ethna_AppObjectの検索部分が使いづらくてたまらない $db->getall();//テーブル全レコード取得 $db->search($column_name,$value);//$column_nameが$valueのレコードを取得 俺の使い方だと、これだけで8割方、用が足りるんだが・・
540 名前:nobodyさん mailto:sage [2006/09/30(土) 23:20:58 ID:???] >>539 全部レコード取得 $this->appmanager->getObjectPropList('AppObjectClassName'); $valueのレコード $this->appmanager->getObjectPropList('AppObjectClassName', null, array($column_name) => new Ethna_SearchAppObject($value, OBJECT_CONDITION_EQ)); 後者をラップするメソッドをAppObjectの基底クラスに作ってやれば、そんな面倒じゃないと思うけど。
541 名前:nobodyさん mailto:sage [2006/10/01(日) 00:53:21 ID:???] ORMを作ろうとしたときinsert/update/delete は簡単にできるけど、 selectは様々なバリエーションがあってむずいな。 joinとかhavingとか、そのへんまでスマートにこなしてるORMってある? RORのActive Record が一番ですか?
542 名前:539 mailto:sage [2006/10/02(月) 14:09:24 ID:???] >>540 ありがとうございます 楽になりました
543 名前:nobodyさん mailto:sage [2006/10/02(月) 16:34:53 ID:???] 複数DBの使用法がよく分かりません、 www.ethna.jp/ethna-document-dev_guide-db.html 上の例だと、 $this->backend->getDB('r'); した場合、 勝手に iniファイルの 'dsn_r' => 'mysql://user:pass@unix+localhost/dbname', の設定を拾ってくるんでしょうか?? $this->backend->getDB('hoge'); なら 'dsn_hoge' => 'mysql://user:pass@unix+localhost/dbname', でしょうか?
544 名前:nobodyさん mailto:sage [2006/10/02(月) 17:38:21 ID:???] 試してから聞け
545 名前:nobodyさん mailto:sage [2006/10/03(火) 16:07:08 ID:???] >>544 上は試して動作したからハイOKという類の内容ではない気が。
546 名前:nobodyさん mailto:sage [2006/10/03(火) 23:18:59 ID:???] なんで? 全く違うDSN書けば違いがわかると思うんだけど。
547 名前:nobodyさん mailto:sage [2006/10/04(水) 11:00:18 ID:???] >>543 概ねあってるけど、Controllerの$dbにも書いておくべし
548 名前:nobodyさん mailto:sage [2006/10/05(木) 14:55:25 ID:???] DBでsessionしたいわけなんですが、 普通に自分で関数カキカキしてactionディレクトリあたりに 入れればつかえる??
549 名前:nobodyさん [2006/10/06(金) 10:09:32 ID:O2kp1NLj] ethnaの公式サイト見ると、 app/action 階層の下に system1_hoge.php system2_hoge.php と設置する場合の手順が書いてありますが、 system1/hoge.php system2/hoge.php という風にアクションファイル自体を system1 とsystem2 で設置ディレクトリを分けたいと考えています。 この場合のアクション定義などが非常にこんがらがってしまったのですが、 どなたか助言おながいします。
550 名前:nobodyさん mailto:sage [2006/10/06(金) 11:36:19 ID:???] Call to undefined function: getrow() のエラーが出るんだけど、 PEARのDBクラス継承してるんですよね? ほわい?
551 名前:nobodyさん mailto:sage [2006/10/06(金) 12:07:20 ID:???] >>550 MLやフォーラムくらい嫁
552 名前:nobodyさん mailto:sage [2006/10/06(金) 12:35:34 ID:???] >>551 サンクス てか継承してないのかよ、表記修正してくれよ、 とおもいますた
553 名前:nobodyさん mailto:sage [2006/10/06(金) 13:47:06 ID:???] アクションクラスで $this->af->setApp('hairetu', $hairetu); して tplで下のようにしてみたんですが、機能しません。 {section name=cnt loop=$app.hairetu} ほわい?
554 名前:nobodyさん [2006/10/06(金) 15:35:21 ID:Ky3gzt1x] 存在しないファイルをrequireしようとしたら fatal Errorになったんですけど、こういう場合のエラー処理は ethna上でのエラー処理に組み込むことはできないんでしょうか?
555 名前:nobodyさん mailto:sage [2006/10/06(金) 18:01:45 ID:???] E_ERROR(FATAL)はエラーハンドラでも上書きできない
556 名前:nobodyさん mailto:sage [2006/10/06(金) 19:31:49 ID:???] 今更ながらEthna 2.3.0 Preview2リリースを入れてみたんだけど、 Ethna_ClassFactoryの変更部分で悩んでいます。 app/[project_id]_Controller.php の $class メンバに 'user' => 'Some_Foo_Bar', と付け足すのは良いとして、 $user =& $this->backend->getObject('user');はどこに記述するのでしょうか? Ethna_ActionFormでいちいち記述するのかな? マニュアル直ってないし・・・ ttp://ethna.jp/ethna-document-dev_guide-appobj-manager.html
557 名前:nobodyさん mailto:sage [2006/10/07(土) 01:27:47 ID:???] >>556 なんかねー、そのへん俺もよくわからんのだけど、とりあえず class Hogeproject_User extends Ethna_AppObject class Hogeproject_UserManager extends Ethna_AppManager って作ったら、そのファイルをControllerでincludeして $user =& $this->backend->getObject('User'); $user_manager =& $this->backend->getManager('User'); ってやってる。$classメンバには何も付け足してない。 なんつーか、以前より面倒になった気がするし。w
558 名前:nobodyさん mailto:sage [2006/10/07(土) 11:29:23 ID:???] >>557 それは面倒ですなw Ethna_Controllerの$classメンバに追加するのが標準的なやり方 見たいなのでもうちょっと簡易な方法があるといいのだけれど。 ウェブサイトには「(不評なら戻します@preview2)」って書いてあるけど MLでは話題にすらなってないし、このまま定着するのかな? とにかくサンプルかもうちょっと詳細なヘルプが欲しいです。
559 名前:nobodyさん mailto:sage [2006/10/07(土) 13:48:08 ID:???] 繰り返し部分を別ファイル(hoge.inc.php)にして require() して使いたいのですが、 どうすればいいでしょうか? require("絶対パス/hoge.inc.php"); しか思いつきませんでした。
560 名前:nobodyさん mailto:sage [2006/10/07(土) 15:26:26 ID:???] >>559 >>556-558 の話がまさにそう。 最新版の話でなかったら、>>566 のURLに詳しく載ってる。
561 名前:nobodyさん mailto:sage [2006/10/07(土) 18:33:16 ID:???] ClassFactoryからgetManager()するならContollerでのincludeも $classへの追加も不要でしょ。 多少面倒な気もしてるけど、俺はActionClassで毎回 $hoge_manager =& $this->backend->class_factory->getManager('Hoge'); $hoge_manager->getHogeList(); とかやってる。もしかして間違ってる?
562 名前:557 mailto:sage [2006/10/08(日) 00:31:43 ID:???] >>561 いや、君が正解だと思う。 おいら、$this->backend->class_factoryプロパティを知らなかったよ。THX. しかし、Ethnaって「多少面倒な気も」というのにいまいち合致しないよね。イメージ的に。 というのは、$this-->appmanager->って、PHPの 「メソッドを追加できないくせにプロパティはE_NOTICEも吐かずにガンガン追加可能」 っていう特徴を活かしてるなって思ったから。その辺がEthnaの「絶妙に妥協」というのに 共感を覚えてたところでもあって。 というか、シングルトンでAppObject/AppManager/ActionClass/ViewClassで Managerオブジェクト(ActionFormオブジェクトもだけど)を持ち回ししてるところに 「すげー」って思ったのだ。最初。それが無くなったのは残念。 あと、PHP5なら $this->backend->getManager('Hoge')->hogeManagerMethod(); ができるよね。だから $this->gm('Hoge')->hogeManagerMethod(); くらいまで簡略化できるなら従来の $this->hoge->hogeManagerMethod(); と同等と思える。
563 名前:nobodyさん mailto:sage [2006/10/08(日) 13:29:42 ID:???] App_ActionClassのコンストラクタで parent::Ethna_ActionClass($backend); $c =& $backend->getController(); $manager_list = $c->getManagerList(); foreach ($manager_list as $k => $v) { $this->$k =& $backend->getManager($v); } こうしてやれば、従来どおりなわけだが
564 名前:563 mailto:sage [2006/10/08(日) 13:34:23 ID:???] www.itt-web.net/modules/bwiki/index.php?Ethna2.3%A4%C7AppManager%A4%CE%A5%D5%A5%A9%A5%ED%A1%BC こことか参考にしてみたらいいと思う。
565 名前:nobodyさん mailto:sage [2006/10/09(月) 10:51:17 ID:???] フォーム値の検証とフィルタについてなんですが、 フィルタをフォーム値検証の前に実施する方法は無いでしょうか? ある変数を半角英数字しか受け付けないように設定、 かつ全角で受け付けたときには自動的に半角にするようフィルタを設定 しているのですが、 全角で入力してしまうと、validate()が0にならないためです。
566 名前:nobodyさん mailto:sage [2006/10/09(月) 13:02:01 ID:???] 実際のところ、クラスのメンバ変数として何が定義されているかわからないのに Controllerの$managerに追加された名前で$this->hogeとアクセスできてしまうのは 問題ありまくりだし、気持ち悪かった。 AppManagerの呼び出し方にワンクッション追加されただけだから、個人的にはそこまで 面倒は感じてないし、記述が長いならメソッドひとつ仲介させれば済む話だと思う。 562氏の言うとおり、ActionFormやAppManagerがAction/Viewを問わずリクエスト内で 自由に使えるのは他のフレームワーク(symfonyとかZend Frameworkとか)には無い考え方で 自分がEthnaを気に入った理由のひとつだけど、そのメリットは無くなってないんじゃないかな?
567 名前:nobodyさん [2006/10/09(月) 18:37:23 ID:NhVn4oaT] 毎回全てのAppManagerを読み込む従来どおりより新方式のほうがいいなー。
568 名前:562 mailto:sage [2006/10/09(月) 19:52:52 ID:???] >>566 >問題ありまくりだし、気持ち悪かった。 実際に問題と言うと ・DB接続しなけりゃ使えない ・Manager全てnewしてるから(シングルトン使ってるとはいえ)重い くらいかな?他に何かある?Managerって作ってもせいぜい20くらいだったから 重いとは思わなかったけど。 キモイのは確かに気持ち悪かったけど、「PHPだしいいじゃん」という気にもさせてくれる。 その辺が「絶妙に妥協」なのかなと。 で、気持ち悪さを払拭しようとすると、Action/View/AppManager/AppObjectそれぞれを ラップしたクラスでoverloadを使って、プロパティへのアクセス方法を定義してやれば ちょっとは気持ち悪くなくなると思う・・・。 jp2.php.net/overload 自分的には「前のが便利、だけど(きっとメリット色々ありそうだから)新方式に従います」 って感じ。
569 名前:566 mailto:sage [2006/10/09(月) 20:38:58 ID:???] んーと、ActionClassのコンストラクタとかでチェックもせずに 上書きしてるから、メンバ変数が破壊されるってことです。 既存のもので言うと、試しにControllerの$managerに $manager = array( 'af' = > 'AirFrance' ); とか入れてみるとActionFormが使えなくなるのが解ると思う。 ($this->af はActionForm じゃなくて AirFrance になったからね) $managerに設定する値についての注意事項も書いていないし、使う側が 注意していればいい、というには危険な仕様じゃないかな。
570 名前:562 mailto:sage [2006/10/09(月) 21:02:06 ID:???] >>569 >んーと、ActionClassのコンストラクタとかでチェックもせずに >上書きしてるから、メンバ変数が破壊されるってことです。 あぁ、なるほど。すっごい盲点でした。 managerが増えすぎていった場合、ハマりポイントになりそうですね。
571 名前:nobodyさん mailto:sage [2006/10/10(火) 07:39:28 ID:???] PHPだし。 厳格なのがよければにしとけば。
572 名前:nobodyさん mailto:sage [2006/10/10(火) 07:40:00 ID:???] 抜けた。 Javaにしとけば。
573 名前:nobodyさん mailto:sage [2006/10/12(木) 12:29:20 ID:???] ttp://ethna.jp/pipermail/users/2006-June/000380.html これと同じエラー(mysql_close)起きてるんですが、 ethna本体とか弄らないと厳しいんでしょうか・・・・ 他に解決方法きぼんぬ
574 名前:nobodyさん mailto:sage [2006/10/12(木) 17:17:50 ID:???] 本体を自分でいじりたくないなら、2.3.0pr1以降か、CVS版をつっこむくらいしか。 あとは、継承してそこにパッチを当てておけば、後ほどバージョンアップしても気にならずに済むかも。 stableの保守も考えてほしいよね。
575 名前:nobodyさん mailto:sage [2006/10/16(月) 16:19:02 ID:???] 関数ぱっと作ってperform()内で使いたい場合、 function kansuu()をperform()内に書いて $this->kansuu で呼び出すだけでOK?
576 名前:nobodyさん mailto:sage [2006/10/16(月) 20:51:20 ID:???] >>575 素で言ってるならPHPのマニュアル100回読み直してこい
577 名前:nobodyさん mailto:sage [2006/10/16(月) 22:29:35 ID:???] PHPっつーか、オブジェクト指向の本読んだほうがいいね。
578 名前:nobodyさん mailto:sage [2006/10/17(火) 13:52:04 ID:???] ethna から pear 使用するためにはどうすればよかとでしょうか。
579 名前:nobodyさん mailto:sage [2006/10/17(火) 15:06:57 ID:???] >>578 作ったプロジェクトにあるlibフォルダに解凍する。
580 名前:578 mailto:sage [2006/10/20(金) 11:47:43 ID:???] >>579 サンクスです、申し訳ないついでに 呼び出しの方法もきぼんぬ
581 名前:nobodyさん mailto:sage [2006/10/20(金) 13:43:30 ID:???] >>580 579じゃないけど Controllerでincludeするのが一般的だと思う。 使うときは普通に使いたいところで使えばいい
582 名前:nobodyさん mailto:sage [2006/10/21(土) 09:57:55 ID:???] smartyフィルタってsmartyのプラグインディレクトリに置くんですよね? フィルタが見つからないって言われる…
583 名前:582 mailto:sage [2006/10/21(土) 11:27:38 ID:???] 自己レスです。 コントローラーで、requireしなきゃいけなかったんですね。 なんかめんどくさいような。
584 名前:nobodyさん mailto:sage [2006/10/21(土) 12:28:34 ID:???] >>581-583 まとめて間違いだ。
585 名前:nobodyさん mailto:sage [2006/10/21(土) 20:49:07 ID:???] >>584 >>582 は間違いだと思うが、他は何がおかしいの? 俺も同じようにしてるんだけど、何か違う方法でもあるの?
586 名前:nobodyさん [2006/10/22(日) 21:38:10 ID:bEm1HQtN] とあるページにGETとかで送られてきた値を、ActionFormのチェック機能で、 customで関数を作って値をチェックしたいとします。 で、それは送られてきた値がDBに該当のレコードがあるかどうかっていう感じ のことをしたいのですが、チェックするメソッド自体はManagerに実装してます。 それでActionFormクラス内にcheck_valueというメソッドを作り、そっからManager クラスを呼びたかったんですが、呼べませんでした。 公式サイトには、「上の3以外のクラスで使いたい場合は*2、Ethna_BackendのgetManager([manager_name])で取得できます。」 って記述があったんですが、ActionFormはbackendも持ってないみたいで取得できず…。 こういう使い方は想定してないんでしょうか? それとも俺のやり方がクソなんでしょうか。 まぁprepare関数内でやればいい話なんでしょうけど…。 せっかくなんでActionForm内でチェックしたいです。 何かいい方法あれば教えてください。
587 名前:nobodyさん mailto:sage [2006/10/22(日) 21:46:29 ID:???] >>585 _smartyプラグインは登録もしないとダメだよね。 _PEARってControllerで全部includeしないでしょ。使うところでincludeしてるだけで。
588 名前:nobodyさん mailto:sage [2006/10/22(日) 23:30:44 ID:???] >>586 backendじゃなくてcontrollerとれ
589 名前:nobodyさん mailto:sage [2006/10/23(月) 00:30:27 ID:???] smartyのプラグインは、コントローラの$directory['plugins']に任意のディレクトリを指定しておけば そこをsmartyの$plugins_dirに登録してくれるからそれでいいんでない?
590 名前:nobodyさん [2006/10/23(月) 12:53:41 ID:iU9TDYVm] >>588 すみません。どうやってとればいいんでしょうか? ActionFormクラスのコンストラクタは確かにcontroller持ってるみたいですが、 メンバ変数には入ってないぽいのでEthnaのソースいぢるしか方法思いつきません…。
591 名前:nobodyさん mailto:sage [2006/10/23(月) 13:41:47 ID:???] >>590 試してないけど、 $ccc =& Ethna_Controller::getInstance(); ではだめかな?
592 名前:nobodyさん mailto:sage [2006/10/23(月) 15:33:36 ID:???] >>587 >>585 の言いたいところはそこじゃないと思われ
593 名前:582 mailto:sage [2006/10/23(月) 15:53:14 ID:???] >>589 pluginディレクトリを指定するところがあったんですね。 見落としていました。勉強になります。 個人的には解決です。ありがとうございました。
594 名前:nobodyさん mailto:sage [2006/10/24(火) 14:00:42 ID:???] VIEWのpreforward内で、 アクションクラスで使った変数を取得するには どうすればいいんでしょうか? 作成中のソフトで データベースの status というフィールドを 1〜5 に割り当ててるんですが、 表示させるときには 1->普通 2->駄目 3->最悪 という感じで数字ではなく日本語で表示させたいと思ってます。 よくわからんのですが、 この1を普通と表示させるようなことは ビューでするというのが一般的なポリシーになるんでしょうか。
595 名前:nobodyさん mailto:sage [2006/10/24(火) 22:19:26 ID:???] どこまで汎用的にするかによると思うけど、viewかtemplateでいいんじゃね?
596 名前:nobodyさん mailto:sage [2006/10/25(水) 01:46:10 ID:???] >>594 基底のViewクラス作ってstatusを全部のViewで有効にするか(その場合Viewは省略しないこと) 全てのstatusを継ぎたいViewClassでextends ViewWhatStatusDefined して そのpreforwardメソッドでド頭に parent::preforwardを全部させておけ。
597 名前:nobodyさん [2006/10/25(水) 04:26:17 ID:QhoBwbI3] >>469 おれは、 /index.php?action_static=true&file=page1 /index.php?action_static=true&file=page2 /index.php?action_static=true&file=page3 ってな感じで、 function preform() { return $this->af->get('file'); } ってやってるよ。 # かなり古い記事に反応していまった自分が痛い(汗)
598 名前:nobodyさん mailto:sage [2006/10/25(水) 20:28:02 ID:???] 痛いね 473でほぼ同じの出てるし
599 名前:nobodyさん mailto:sage [2006/10/26(木) 23:33:48 ID:???] ウェブサイトの左側部分を動的なプルタウンメニューを置いてます。 右側がメニューで選択した内容を表示させる部分としてます。 この場合、左側部分はどのアクションでも常に同じ内容を表示しているわけで、 できれば include とかすると楽なんですが、 ethnaでincludeのが適切なのか良く分かりません。 (actionクラスでincludeかつtplでinclude??) またincludeする場合も相対パスでどうやって記述すればいいのか、 が分かりません。 (よく本体は設置場所を動かすので、影響を受けないように相対パスで 指定したいと考えています。) 助言おながいします
600 名前:nobodyさん mailto:sage [2006/10/27(金) 01:36:41 ID:???] >>599 www.itt-web.net/modules/bwiki/index.php の 「テンプレートからEthnaのActionを起動」 とかどう?
601 名前:599 mailto:sage [2006/10/27(金) 13:23:57 ID:???] >>600 レスサンクスです 「SmartyPluginに下記の関数を用意」のところなんですが、 直接smarty自体を弄る必要が出ますよね? ここなんとかならんでしょうか?
602 名前:599 mailto:sage [2006/10/27(金) 13:38:43 ID:???] ×直接smarty自体 ○直接ethna自体 でした 極力ethna本体は弄りたくないと考えています
603 名前:nobodyさん mailto:sage [2006/10/27(金) 22:43:10 ID:???] >>599 俺はapp以下にAPPID_SmartyPlugins.phpを作って、Controllerでincludeしてるけど。
604 名前:599 mailto:sage [2006/10/28(土) 12:37:29 ID:???] >>600 >>603 おかげさまで上手くひとまずは上手く行ったのですが なぜかメインアクションのテンプレから 別のアクションをincludeすると、ループが発生します。 別のアクションというのは単にテンプレを表示させるだけの 非常に簡単なものです。 またそのアクション単体での動作も確認できました。 メインアクションもインクルードをしない場合の動作は確認できました。 しかしなぜかメインアクションのテンプレから include すると ループが発生してしまいます。 どなたかヘルプみー
605 名前:nobodyさん [2006/10/28(土) 17:56:31 ID:FIh0kQ4t] ちょっと行き詰ったので、お知恵を拝借させてください。 複数のAppManagerでの処理にまたがるトランザクションの方法について 悩んでいます。 たとえばポイント制の物販(?)のようなものがあるとして、顧客情報と 購入情報のAppManagerを用意しました。購入処理を行った場合、顧客 情報からはポイント減算処理、購入情報には履歴を書き込みます。 単位の処理だと、 $user_m->userPoint( 30 ); // 30ptを消費 $sales_m->addHistory( ... ); // 購入履歴を追加 のように実装できますが、これらは同じトランザクション内で処理される 必要があります。 一方のManagerから他方のManagerを呼び出して処理をまとめてしまうことも 可能ですが、Managerの独立性が保たれないのでそれは気持ち悪いです。 これらのManagerを管理する別のManagerを作成して、そこでトランザクションを 制御するというのも考えましたが、機能ごとに分離すると数ばかり多くなって 収拾がつかなくなってしまいました。(かといって統合すると用途がごちゃごちゃの Managerができてしまう罠…) 続きます↓
606 名前:605 mailto:sage [2006/10/28(土) 17:57:43 ID:???] (続きです↓) 呼び出しているのはActionClass/ViewClassなので、そちら側でトランザクションを 制御することも考えましたが、はたして考え方が正しいのか自信がありません。 Ethna_ActionClassを継承したHoge_ActionClassに function beginTransaction() { $db =& $this->backend->getDB(); $db->begin(); } とか書いて、実際の処理の中で function perform() { ... // 購入処理 $this->beginTransaction(); $result = true; $result |= $user_m->userPoint( 30 ); $result |= $sales_m->addHistory( ... ); if ($result) { $this->commitTransaction(); } else { $this->rollbackTransaction(); } ... } のように実装したらどうだろうかということです。ActionClassからbackendのデータベース オブジェクトを直接弄ることに若干抵抗があるので、いまいち踏み切れません。 こんな場合、皆さんならどのように実装しますでしょうか。あるいは既に実装している例など ありましたら大変参考になります。宜しくお願いします。
607 名前:nobodyさん mailto:sage [2006/10/28(土) 19:42:09 ID:???] Action で指定したビュー名と同じ名前のテンプレートがなければ 実行できないんでしょうか? ビュー名と違うテンプレートを動かそうとしてみたんですが、よくわかりません。 どなたかやったことありませんか?
608 名前:nobodyさん mailto:sage [2006/10/28(土) 23:31:34 ID:???] >>607 ビューを省略したら同じ名前のテンプレートが使われる。 省略しなければ、違うテンプレートを指定できる。
609 名前:nobodyさん mailto:sage [2006/10/28(土) 23:34:15 ID:???] >>607 Movajiなんかの考え方だとそうしたくなるけど、Ethnaでは 原則としてビューとテンプレートは一対一。 どうしてもやりたいなら、ViewClassのpreforward()あたりで $this->forward_pathを書き換えるとかで対応できるだろうけど お勧めはしない。
610 名前:607 mailto:sage [2006/10/29(日) 00:07:17 ID:???] ビューとテンプレートは1対1だったんですか。 ちょっと不便ですが、テンプレートの中でテンプレートを呼んで対応しようと思います。 ありがとうございました。
611 名前:599 mailto:sage [2006/10/29(日) 09:02:16 ID:???] どなたかヘルプミー ttp://www.itt-web.net/modules/bwiki/index.php 最初はアクションの内容で何かミスっていると思ったのですが、 どうやら上記ページに書いてあること自体がうまく行っていないようです。 空アクション(テンプレを表示させるだけのデフォルト状態)の テンプレから別の空アクション読み込んでもループが発生します。
612 名前:nobodyさん mailto:sage [2006/10/29(日) 11:56:22 ID:???] >>611 メインの処理実行中に同じControllerでtrigger()なんてやったら、Controllerで 管理している諸々のオブジェクトが上書き(破壊といってもいい)されるから、動作が おかしくなっても不思議じゃないと思うけど…。 表示のときに呼ばれるから他の処理は終わっているので大丈夫という考えは 強引というか激しく危険。まあ、いずれにしてもグローバル変数にController オブジェクトが置かれている以上、1リクエスト内で複数のControllerを走らせる ことも正しく動く保証がないので、こういったアプローチはEthnaでは難しいと思われ。 # 間違ってたら、ツッコミよろ おとなしく親のVewClassにメソッドでも用意して、必要に応じて子から呼び出すような 感じで実装するのが吉かと。
613 名前:nobodyさん mailto:sage [2006/10/29(日) 20:17:22 ID:???] ControllerをgetInstanceじゃなくてnewすれば何とかなるかもしれない。 あとはiframeとか。
614 名前:nobodyさん mailto:sage [2006/10/30(月) 13:05:37 ID:???] >>605 別にManagerからManagerを呼び出しても良いのではないですか? トランザクションを意識するのはManagerのサービスとしての 窓口(Actionから呼ばれる部分)だけで、その内部では必要に応じて 各Managerが呼び合う。 窓口の最後でそれらの結果を見てCommit/Rollbackする、みたいな。 逆に、Actionからトランザクション制御はしない方が良い気が・・。
615 名前:599 mailto:sage [2006/10/30(月) 16:51:11 ID:???] >>612 ガガーーン!! 言われてみれば納得です。 これを想定して全て作っていたので、激しく鬱です。 レスありがとうございました。
616 名前:nobodyさん mailto:sage [2006/10/30(月) 19:04:13 ID:???] そのページ、古くない?今のソース ethna.jp/doc//__filesource/fsource_Ethna__classEthna_Controller.php.html#a739 見るとtriggerの引数が違うよね。
617 名前:nobodyさん mailto:sage [2006/11/02(木) 10:43:39 ID:???] 読み込んだ現在のアクション値を得るにはどうすればいいでしょうか? 「?act=アクション名」をトリガーにしているので、 これを使うのもいいカナと思ったんですが、 actionformで毎度指定する必要があるのがしんどいです
618 名前:nobodyさん mailto:sage [2006/11/02(木) 12:39:06 ID:???] $this->session->set('hoge', 'ほげ'); で設定するのと $_SESSION['hoge'] = 'ほげ'; で設定するのってどう違うのでしょうか? $this->session->set('hoge', 'ほげ');したやつを echo $_SESSION['hoge']したら読めてしまうのですが・・・。
619 名前:nobodyさん mailto:sage [2006/11/02(木) 20:58:53 ID:???] >>617 Controllerに$action_nameって入ってるね これ直接使うのはちょっと抵抗あるな でもriafさんも使ってるから、アリなのかも riaf.org/svn/junkbb/trunk/app/Junkbb_ViewClass.php
620 名前:nobodyさん mailto:sage [2006/11/02(木) 22:42:53 ID:???] getCurrentActionName()
621 名前:nobodyさん mailto:sage [2006/11/02(木) 22:46:27 ID:???] >>618 そこだけ見るなら同じ。 startとかが少しお得。
622 名前:nobodyさん mailto:sage [2006/11/03(金) 11:29:06 ID:???] ethna.jp/ethna-document-dev_guide-misc-pager.html ここを見てページャは上手くいったんですが、 ページ数($page.indexの表示数)をどのように設定するかが分かりません。 $this->total = 1000; $this->count = 5; とした場合、 ページ数は10個分表示されます。 これを5個に変えたい場合はどこを変えればいいんでしょうか? テンプレソース、アクション側ソース、 ともに見たんですが、判断できませんでした。
623 名前:nobodyさん mailto:sage [2006/11/03(金) 16:18:19 ID:???] >>622 Ethna_Util::getDirectLinkList()内で、10と決め打ちされてるので、smarty側でcountしてやるか、Ethna本体に手を入れるか、getDirectLinkListをオーバーライドするしかないかな
624 名前:nobodyさん mailto:sage [2006/11/03(金) 16:33:03 ID:???] Ethna_Util::getDirectLinkList()の中で直値でかかれてるっぽい。 Ethna_Utilを書き換えるか、同じ機能を自前で実装するか、コミッタさんに メールしていい感じに直してもらうかかなw あと、このドキュメントではActionClassでページャの処理を行っているけど、 本来こういう処理はViewClassでやるべきだね。
625 名前:624 mailto:sage [2006/11/03(金) 16:33:50 ID:???] う、リロードしないで書いたら被った…orz
626 名前:nobodyさん mailto:sage [2006/11/08(水) 17:33:14 ID:???] CVS版で、AppObjectを使って、 $where =& new Ethna_AppSearchObject(1, '='); $filter = array('hoge_id' => $where,); $example =& appID_Example($this->backend); $result = $example->searchProp(null, $filter, null, 0, null); こんなふうに検索したんですが、生成されるSQLの検索条件が、 'hoge_id' != '1' になってしまいます。 どこか使い方間違っているんでしょうか…
627 名前:nobodyさん mailto:sage [2006/11/08(水) 19:38:51 ID:???] $example =& appID_Example($this->backend); は $example =& new appID_Example($this->backend); だよね。 $where =& new Ethna_AppSearchObject(1, '='); は $where =& new Ethna_AppSearchObject(1, OBJECT_CONDITION_EQ);
628 名前:626 mailto:sage [2006/11/09(木) 00:28:07 ID:???] >> 627 きちんと動きました! 参考にしたサイトの記事が古かったようです。 ソース読んでみて、定数が使われているなぁとは思っていたんですが、食い違いに混乱していました。 ありがとうございました。
629 名前:nobodyさん mailto:sage [2006/11/17(金) 16:31:00 ID:???] Ethna 2.3.0 Preview2がインストールできません。 環境は、FreeBSD6.1-RELEASE、PHP5.2.0、Ethna2.3.0 beta か preview1 だと思います。 # ethna -v Ethna 2.3.0-dev # pear list-channels で、 Registered Channels: ==================== Channel Summary pear.ethna.jp Ethna PEAR Channel pear.php.net PHP Extension and Application Repository pecl.php.net PHP Extension Community Library __uri Pseudo-channel for static packages の状態で、 # pear upgrade ethna.jp/pear/Ethna-2.3.0-preview2.tgz を実行したのですが、 downloading Ethna-2.3.0-preview2.tgz ... Starting to download Ethna-2.3.0-preview2.tgz (120,756 bytes) ..........................done: 120,756 bytes ERROR: pear.php.net/Ethna: conflicting files found: Ethna/bin/ethna_handle.php (pear.ethna.jp/ethna) : : というエラーでアップデートに失敗します。 手順がおかしいでしょうか?何かヒントをいただければと思います。
630 名前:nobodyさん mailto:sage [2006/11/17(金) 19:57:14 ID:???] Ethna本体をいじっていないならuninstallしてからinstallすれば?
631 名前:629 mailto:sage [2006/11/17(金) 20:33:17 ID:???] >>630 アンインストールしても同じエラーでした。 展開して適当なところに置けばよいはずだと思いファイルを手動で消して 展開したところ、こんどは ethna コマンドで、 # ethna -v Could not open input file: @PEAR-DIR@/Ethna/bin/ethna_handle.php 置き換えた ethna コマンドをみると確かに、 ETHNA_HOME="@PEAR-DIR@/Ethna" となっていたので、@PEAR-DIR@ を FreeBSD の /usr/local/share/pear/ に 書き換えたところ、無事アップグレードできたみたいです。 上記の箇所は pear install したときに書き換えられるんですかね? とにかく何とか解決しました。 お騒がせしました。
632 名前:nobodyさん mailto:sage [2006/11/20(月) 11:17:31 ID:???] 下記のページを参考にSmartyにクラスメソッドを追加しようとしています。 PHP 5.2.0/Ethna 2.3.0 preview 2 参考:いつもながら初心者には簡素すぎるマニュアル・・orz ttp://ethna.jp/ethna-document-dev_guide-misc-smarty_register_function.html これは、 class foo { function bar($vl) { return number_format($vl); } } というfoo.phpを用意して、 {ProjectID}_Contlor.phpの$smarty_prefilter_pluginに array('foo', 'bar'), を追加してやればhoge.tplにおいて{$app.hage|bar}のように使えるという理解で あってますか?その場合、foo.phpはどこに置くのでしょうか? appディレクトリやSmartyのpluginsディレクトリにおいても動作しませんでした。 error messageは以下のとおりです。 Fatal error: Smarty error: [in index.tpl line 22]: [plugin] modifier 'bar' is not implemented (core.load_plugins.php, line 118) in /usr/local/lib/php/Smarty/Smarty.class.php on line 1095 Fatal error: Call to undefined function smarty_modifier_bar() in ・・・
633 名前:nobodyさん mailto:sage [2006/11/20(月) 21:38:33 ID:???] どこに置いてもいいけど、Contorollerでinclude_onceすればおけ 汎用性があるならlib/の下とかでもいいのでわ?
634 名前:nobodyさん mailto:sage [2006/11/21(火) 00:42:33 ID:???] >>633 どうもです。 >>632 を投稿した後にすぐ気がついて、include_onceしたのですが エラーは変わりませんでした。 あ、ひょっとしてpreview 2には含まれてなくて、cvs版のみで有効な 機能だったりしますか? 明日試してみます>cvs版
635 名前:nobodyさん [2006/11/21(火) 00:44:53 ID:l75La6qC] App以下にProject_HogeClass.php というクラスファイルを置いてます。 このクラスファイルの中でActionClass内で使用している 変数などを取得するためには引数として渡す以外にどんな方法があるでしょうか? たとえば、ActionClassで $this->session->set("hoge", "ほげ") としている場合、 Project_HogeClass.php で hogeセッション値である「ほげ」を 取得するためにはどうすればいいでしょうか? $ethna->session->get('hoge') では間違ってるでしょうか? (ちなみにこれではうまく行きませんでした)
636 名前:nobodyさん mailto:sage [2006/11/21(火) 01:13:01 ID:???] >>635 そういうことしようと思ったことないから想像だけど、 $this->session->set('hage', 'hoge'); って登録したんなら、それを取り出すのは、 $this->session->get('hage'); なんじゃないの? どこから$ethnaは出てきたの?
637 名前:nobodyさん mailto:sage [2006/11/21(火) 02:06:11 ID:???] >>634 preview2でも使えると思いますよ。 えと、class foo {} じゃなくて functionだけ書いておくのです。
638 名前:nobodyさん mailto:sage [2006/11/21(火) 02:52:20 ID:???] >>635 あんまし美しくないかもだけど、こんな感じかな? $c =& Project_Controller::getInstance(); $b =& $c->getBackend(); $b->session->get('hoge'); 個人的にはHogeClassのメンバに$backendを持っておいて コンストラクタで参照を渡すと思う。他にも使えるからね。 $this->backend->session->get('hoge'); HogeClassのメソッドでは、こういう風に呼び出すような。
639 名前:nobodyさん mailto:sage [2006/11/21(火) 09:18:10 ID:???] >>637 上手くいきました。感謝! /** *@vararraysmarty prefilter定義 */ var $smarty_prefilter_plugin = array(/* *TODO: ここにユーザ定義のsmarty prefilter一覧を記述してください * *記述例: * *'smarty_prefilter_foo_bar', */ array('foo', 'bar'), (1) 'bar', (2) ); (1)のように書きましたが、コメントどおり書いて(2)もo.k.でした。 (1)の方が後でメンテするときによさそうですね。
640 名前:635 mailto:sage [2006/11/21(火) 10:04:22 ID:???] レスありがとうございます >>636 $thisは自身参照の場合ですよね >>638 前者はなんとなくは理解できましたが、 後者はあまり把握できてません、、、 ちょっと試したりしてみます、 ありがとうございました。
641 名前:nobodyさん mailto:sage [2006/11/21(火) 16:13:24 ID:???] Ethnaのサイト見て吹いたのがこのスレのやり取りがマニュアルとして そのまま載ってたこと。中の人も見てるんだ。 開発がんばってください。 マニュアル作成ももうちょっとだけがんばってください。ノシ
642 名前:nobodyさん mailto:sage [2006/11/21(火) 19:59:57 ID:???] >>635 マネージャにしちゃ駄目なん? マネージャならプロパティにsession持ってるし
643 名前:nobodyさん mailto:sage [2006/11/23(木) 00:49:18 ID:???] アクションフォームのvalidate、 javascriptでも確認するようにできませんかね? アクションフォームあたりを継承して、そうしてる人いないでしょうか。 わざわざ確認用のアクション作成するのも面倒ですが、 javascriptで確認動作してくれれば、結構省けると思うんですよね
644 名前:nobodyさん mailto:sage [2006/11/23(木) 02:29:38 ID:???] SQLのインジェクション対策がかなり面倒なんで、 SQL文を自動的にエスケープするようにしたいんですが、 良い方法ないでしょうか? $db->DB を継承しようかと考えたんですが、 ethnaクラスを完全に理解していないもので、 どこで記述するかなど$db->DBの継承の仕方がよくわからんとです
645 名前:nobodyさん mailto:sage [2006/11/23(木) 09:44:06 ID:???] >>644 prepare使え
646 名前:nobodyさん mailto:sage [2006/11/23(木) 09:55:15 ID:???] >>641 マニュアル作成はもうちょっとどころか、もっと力入れて欲しいな。 正直使い始めの漏れにはどういったことができるのか公式サイトを見ただけではよくわかりません。 公式サイトの解説は適当すぎる気がする。 アクション名の取得のやり方などの公式には掲載されておらず、 他のサイトには掲載されているとかいう内容が多すぎるのもどうかと思われ。 で、ここのリンク切れはいつになったら直すんだろう? labs.gree.jp/Top/Document/20060707.html
647 名前:nobodyさん mailto:sage [2006/11/23(木) 10:14:04 ID:???] >>646 まあ確かに楽をするためにフレームワークを導入するのに、 そのフレームワークの使い方に苦労する現状は本末転倒だわなw でもversion 2.1.2でよければ、チュートリアルを読んで順に実行していけば 一通り作れるように書いてあるよ。 version 2.3.0の新機能については同意。まだ開発中だからしょうがないけどね。
648 名前:nobodyさん mailto:sage [2006/11/23(木) 13:00:12 ID:???] 最近ふじもと神は更新してますか?
649 名前:nobodyさん mailto:sage [2006/11/23(木) 14:47:54 ID:???] version 2.3.0の新機能イイよ。どんどん楽に融通が効く感じ。 機能知るにはコード追っかけるしかないけどさ、たいした量があるわけじゃないし、 全然「見て分かる」範囲じゃね?
650 名前:nobodyさん mailto:sage [2006/11/23(木) 18:14:51 ID:???] >>649 新機能ってなによ
651 名前:nobodyさん mailto:sage [2006/11/24(金) 00:24:45 ID:???] >>649 Ethna工作員乙 利用者数及び使いやすさ、習得期間等でsymfonyに負けんよう精々ガンガレヨォ〜
652 名前:nobodyさん mailto:sage [2006/11/24(金) 01:11:10 ID:???] version 2.3.0をリリースしたらドキュメント強化に取り組んでもらえるとか。 個人的にはUnittest関係のドキュメントをお願いしたいな。 PHP5に移行してからエラーは全てthrow exceptionするようにしてるので その辺も考慮した解説になるとうれしいな。
653 名前:nobodyさん mailto:sage [2006/11/27(月) 13:27:13 ID:???] class Test_HogeManager extends Ethna_AppManager { var $hoge = $this->config->get('hoge'); function abc() { echo $hoge; } } $this->Hoge->abc(); とすれば $this->config->get('hoge') の値が表示されるはずかと 思いますが、上手くいきません。 どこか根本的に間違ってますでしょうか?
654 名前:nobodyさん mailto:sage [2006/11/27(月) 13:53:42 ID:???] >>653 Ethnaのバージョンは?
655 名前:nobodyさん mailto:sage [2006/11/27(月) 22:25:04 ID:???] >>653 これでどう? class Test_HogeManager extends Ethna_AppManager { var $hoge; function Test_HogeManager(&$backend){ parent::Ethna_AppManager(&$backend); $this->hoge = $this->config->get('hoge'); } function abc() { echo $hoge; } }
656 名前:nobodyさん mailto:sage [2006/11/28(火) 01:56:02 ID:???] >>653 var $hoge = $this->config->get('hoge'); が、PHPとして間違ってない?それとも俺が知らないだけ? いつこの$hogeメンバはconfigのgetを実行するの?
657 名前:nobodyさん mailto:sage [2006/11/29(水) 11:53:08 ID:???] PHP 5.2.0, Ethna 2.3.0 preview 3 な環境でUnitTest(Simple Test)をやってみた。 で、なんとなく上手く動いているようなのだけど、 Notice: Only variable references should be returned by reference in /usr/local/share/pear/simpletest/simple_test.php on line 74 Notice: Only variable references should be returned by reference in /usr/local/share/pear/simpletest/simple_test.php on line 62 なる notice がでます(php.ini では error_reporting = E_ALL にしてます)。 エラーの意味はそのまんまですが、皆様の環境でも同様の notice が でますでしょうか?
658 名前:657 mailto:sage [2006/11/29(水) 13:55:00 ID:???] やはり上手く動いてないかも。 authenticateを使わないprepareとperformだけのaction formで $forward_name = $this->ac->prepare(); $this->assertNull($forward_name); $forward_name = $this->ac->perform(); $this->assertEqual($forward_name, 'hage'); と記入すると両ケースともpassするけど>>657 のnoticeとExceptionが4つでる。 エラー処理を全てthrow exceptionしてるのがいけないのかな?
659 名前:657 mailto:sage [2006/11/29(水) 17:29:08 ID:???] テストで簡単なプロジェクトを作成して、throwやtry、catchを 使わないようにしたらnoticeやExceptionは出ませんね。 SimpleTestとEthnaのどちらに原因があるのか分からないけど、 これらを改造するスキルは無いのであきらめるしかなさそうです。
660 名前:nobodyさん mailto:sage [2006/11/29(水) 20:31:18 ID:???] NoticeはSimpleTestでしょう。 Exceptionはcatchしてないだけじゃないの?
661 名前:nobodyさん mailto:sage [2006/11/29(水) 22:21:59 ID:???] >>660 > NoticeはSimpleTestでしょう。 ですかね。 > Exceptionはcatchしてないだけじゃないの? それは無いです(たぶん)。 テスト自体は成功するのですが余分なExceptionがでます。 今、例外をraiseErrorに書き換えようか激しく思案中・・・。
662 名前:661=657 mailto:sage [2006/11/29(水) 23:29:07 ID:???] 一応現象が再現する最低限のコードを・・・。 任意のApplicationManager(仮にProject_FooManager.php)に 例外をthrowするだけのfunctionを追加 function thex() { thrown new exception ('exception test'); } コントローラに追加(include & 'foo' => 'Foo',) app/action/bar.phpのperformに try { $this->foo = $this->backend->getManager('foo'); $this->foo->thex(); } catch (exception $e) { $this->ae->addObject(null, $e); return 'error'; } return 'bar'; これでちゃんとerror.tplが表示されます。 次にethna add-action-test bar としてBarTest.phpに // barアクションの実装 $forward_name = $this->ac->perform(); $this->assertNotEqual($forward_name, 'error'); と書くとテストにはパスするが他に4つほどEceptionが表示されます。 こんな感じです。
663 名前:nobodyさん mailto:sage [2006/12/02(土) 13:29:39 ID:???] ttp://ethna.jp 鯖落ちてる?
664 名前:nobodyさん mailto:sage [2006/12/02(土) 13:34:12 ID:???] >>663 俺も同じくアクセスできないです pear install ethna.jp/pear/Ethna-2.3.0.tgz しても Connection to `ethna.jp:80' failed: Success サイトは見れるんですけどね
665 名前:663 mailto:sage [2006/12/02(土) 14:36:09 ID:???] サイトは見れるようになりましたね。
666 名前:nobodyさん mailto:sage [2006/12/04(月) 15:06:04 ID:???] 2.1.2から2.3.0へアップグレードしましたが、 ethna_renderer_smarty.setplugin(class/Ethna_Controller.php:1624): Does not exists. [ERROR CODE(1)] というエラーが表示されます。 ethna.jp/ethna-document-dev_guide-misc-migrate_project.html を見てやってますが、 依然としてこのエラーメッセージだけ解決できません。 ご助言プリーズ
667 名前:nobodyさん mailto:sage [2006/12/04(月) 20:47:07 ID:???] それだけじゃなんとも。 renderer関連を見直しましょう。
668 名前:nobodyさん mailto:sage [2006/12/05(火) 03:58:07 ID:???] またダウンしてないか?
669 名前:657 mailto:sage [2006/12/05(火) 19:37:00 ID:???] >>657 ですが、その後ソースを見たりして例外を利用していてもNoticeは でなくなりました。テスト項目以外のExceptionが出るのは変わりませんが。 とにかく例外は利用できそうなのでほっとしました。
670 名前:nobodyさん mailto:sage [2006/12/05(火) 23:11:23 ID:???] 確認画面に関して、何か良いロジックないでしょうか? 作り方次第では非常に簡単にできそうなのですが。 ちなみに確認画面とは、アクションを実行する前の、 一度本当に〜〜してもいいですか?みたいな感じの画面のことです。 自分が思いついた一番楽そうな方法は ・prepare()内で確認フラグがたってたら、returnで確認画面表示、 確認フラグがたってなかったら、アクション実行。 です。もっと楽そうな方法ってあるでしょうか?
671 名前:nobodyさん mailto:sage [2006/12/07(木) 16:51:48 ID:???] Ethnaの2.3.0に乗り換えましたが、AppManager内で etc/hoge-ini.php 内の 値を取得するには、いちいち controller のインスタンスを取得して、Backendを 読み出して、getConfig()して…とやっていかなくてはいけないんでしょうか? なんだかどんどんめんどくさくなっていきますね…。
672 名前:nobodyさん mailto:sage [2006/12/07(木) 22:21:58 ID:???] 昔から$this->configで取れるけど?
673 名前:nobodyさん mailto:sage [2006/12/08(金) 09:36:28 ID:???] >>672 質問に対しての回答の仕方がおかしい件について
674 名前:671 mailto:sage [2006/12/08(金) 10:00:57 ID:???] >>672 すみません。取れました。 昨日散々やったのですが、何故か取得できなくて・・・。 >>673 意味は通じたのでOK
675 名前:nobodyさん mailto:sage [2006/12/08(金) 10:05:51 ID:???] $sessionに登録されたキー一覧を取得することってできませんか? 自分で登録したキーぐらい覚えとけよと言われたらそれまでなんですが。 セッションに関するメソッドにはそれらしいのがなさそうですね。 [Ethna_Session] => Array ( [0] => ethna_session [1] => restore [2] => isvalid [3] => start [4] => destroy [5] => regenerateid [6] => get [7] => set [8] => remove [9] => isstart [10] => isanonymous [11] => _validateremoteaddr )
676 名前:nobodyさん mailto:sage [2006/12/08(金) 12:04:06 ID:???] array_keys
677 名前:nobodyさん mailto:sage [2006/12/08(金) 13:29:29 ID:???] >>673 >質問に対しての回答の仕方がおかしい件について 全然おかしくないぞ。
678 名前:nobodyさん mailto:sage [2006/12/09(土) 15:19:40 ID:???] ethna.jp/ethna-document-dev_guide-form-type.html ココを参考に ファイルのアップロードプログラムを作っています。 単体ファイルなら上手く成功したのですが、 複数ファイル(配列)をアップロードしようとすると、 どうもform値としてわたっていないようです。 フォーム側では <INPUT type="file" name="up_file[]"> ActionFormクラスで 'up_file'に 'type' => array(VAR_TYPE_FILE), という指定を行ってます。 どこか誤りはあるでしょうか?
679 名前:nobodyさん mailto:sage [2006/12/10(日) 15:03:52 ID:???] >>678 私もそれ知りたいですね、 今は$_FILEを直接使って逃げようかと思案中・・・ ethnaのメリットが下がりますが。
680 名前:nobodyさん mailto:sage [2006/12/10(日) 21:35:54 ID:???] >>678 間違ってないと思う。 とりあえず、ActionClassで、 var_dump($this->af->get('up_file')); ってしたらどうなる?
681 名前:nobodyさん mailto:sage [2006/12/11(月) 18:58:01 ID:???] formタグにマルチパート指定は入れてるよな 当然だよな
682 名前:nobodyさん mailto:sage [2006/12/11(月) 22:06:03 ID:???] >>681 単数の場合はOKってんだから、大丈夫だと思うんだけど、678じゃないけど。
683 名前:nobodyさん mailto:sage [2006/12/12(火) 04:16:06 ID:???] あー、requiredをtrueにしてると、array(VAR_TYPE_FILE)はどうやってもエラーになった気がするなー FILEはそもそもが配列なので、そこんとこでethnaがなんか変なことになっていた気がする オレはethnaに適当にパッチ書いて動くようにしてしまった
684 名前:nobodyさん mailto:sage [2006/12/12(火) 07:11:19 ID:???] >>683 >オレはethnaに適当にパッチ書いて動くようにしてしまった それをぜひ公開して・・・
685 名前:nobodyさん mailto:sage [2006/12/12(火) 09:29:08 ID:???] >>684 683じゃないけど。 Ethna_ActionForm.phpの533行目辺り foreach (array_keys($form_vars) as $key) { // 値が空かチェック if ($type == VAR_TYPE_FILE) { if ($form_vars[$key]['size'] == 0 || is_uploaded_file($form_vars[$key]['tmp_name']) == false) { この辺やね。 $form_vars[$key]['size']しか使って判定してないんで、Arrayの時はこけるね。確かに。
686 名前:nobodyさん mailto:sage [2006/12/12(火) 14:04:54 ID:???] 2.3.0でやってみたけど、複数ファイルもrequiredも特に問題ないよ? >>685 もその前にis_arrayしてるから問題ないし。
687 名前:nobodyさん mailto:sage [2006/12/12(火) 17:06:29 ID:???] Ethnaではフォーム値に対してActionForm内に関数を定義してフィルタを かけることが可能ですが、この関数をひとつのファイルに収めて各フォーム で共有することは可能でしょうか? function _filter_str2upper($value) { return strtoupper($value); } こういう細かい関数をいっぱい定義しているのですが、各ページに書くのも 手間なので・・・
688 名前:nobodyさん mailto:sage [2006/12/12(火) 17:57:01 ID:???] そのために継承がある。
689 名前:nobodyさん [2006/12/12(火) 18:00:26 ID:ymrP8Ip7] 683だけど、確かに2.3.0で確認したら、その問題は解消されていたわ 俺が問題に対処してたバージョンは2以前だったけど、 さすがに678さんがそんな古いバージョンを使っているとは思えんし、 なんか別原因と考えたほうがよさそーね
690 名前:687 mailto:sage [2006/12/12(火) 19:35:37 ID:???] >>688 なるほど。 {Project_ID}_ActionForm.php に書いておけば良いのですね。 ありがとうございました。
691 名前:nobodyさん mailto:sage [2006/12/14(木) 22:19:50 ID:???] Ethna-usersにRoRの大物キタ━━━━(゚∀゚)━━━━ッ
692 名前:nobodyさん mailto:sage [2006/12/15(金) 01:52:12 ID:???] でかいひとキター
693 名前:nobodyさん mailto:sage [2006/12/15(金) 09:19:35 ID:???] データベーステーブルをいじくる画面作る際に ・新規(new new_do) ・更新(update update_do) ・削除(delete delete_do) の6画面が1テーブル毎に毎回必要になります。 importform() exportform()があるので コーディング自体はそれほど苦ではないのですが テンプレートの枚数が多くなって鬱になってきます。 上手くまとめる方法ないのでしょうか・・
694 名前:nobodyさん mailto:sage [2006/12/15(金) 10:03:40 ID:???] PHP on Ethnaとか… ねーなw
695 名前:nobodyさん mailto:sage [2006/12/15(金) 10:44:48 ID:???] ポエ…名前はかわいいな
696 名前:nobodyさん [2006/12/15(金) 14:25:35 ID:dxQfzRie] 試したことないけど blog.as-roma.com/BoBlog/index.php?itemid=1267
697 名前:nobodyさん mailto:sage [2006/12/16(土) 00:15:34 ID:???] 共有レンタルサーバーで ethnaを使おうと思うのですが、 CGIでPHPを動作させたい場合、 プロジェクト名/www 内を.cgiにするだけでいけます?
698 名前:nobodyさん mailto:sage [2006/12/16(土) 00:38:37 ID:???] >>697 やってみりゃいいじゃん。 まだ借りてないから出来ないとか言うなよ。w
699 名前:nobodyさん mailto:sage [2006/12/16(土) 01:38:20 ID:???] >>698 実際どうなるか、より理論上、どうなるかを聞いておきたいです、
700 名前:nobodyさん mailto:sage [2006/12/16(土) 03:22:58 ID:???] 「理論上」なら何だってできるだろ。
701 名前:nobodyさん mailto:sage [2006/12/16(土) 03:25:51 ID:???] EthnaでCLI での使用を想定したスクリプト作っている人いますか? Actionだけ作成して、みたいな感じですかね。 ethnaでやるメリットが少なそうですが。
702 名前:nobodyさん mailto:sage [2006/12/16(土) 03:27:55 ID:???] >>700 日本語読めてますか
703 名前:nobodyさん mailto:sage [2006/12/16(土) 11:46:54 ID:???] >>701 バッチ処理とかに使ってる人もいるんじゃないかな。 >>699 揚げ足取ってないで、自分は理論上どうなると思ってるのか書きなよ。 700の言うとおり、理論上ならどうにでもなる。
704 名前:nobodyさん mailto:sage [2006/12/16(土) 12:46:19 ID:???] >>697 いけるよ♪
705 名前:nobodyさん mailto:sage [2006/12/16(土) 12:48:08 ID:???] >>701 Webの方でAppManager類が充実してきてて、CLIでもDB処理したいなーと 思う時は使います。あと、メールの送信とか楽だし。もちろん、Viewレスの ActionClass::perform()のみね。 >>699 理論上でできないと思ったらそのワケを。 実践してできなかったら、どこで詰まったかを書けばいいんじゃないの?
706 名前:nobodyさん mailto:sage [2006/12/16(土) 15:32:44 ID:???] 非常によく悩むんですが、 似たような種類のデータを扱うとき、 そのデータ名のID(?)って変えますか? 例えば、苗字データと名前データを表示するアクション、テンプレをそれぞれ作る場合、 それぞれのアクションで $this->af->setApp('myouji_data', $myouji) $this->af->setApp('namae_data', $namae) と名前を分けますか? 私はそのつど対象のデータによって分けているんですが、 テンプレが似通ってる場合、.tplの{$app.***}の***の部分をいちいち 変更するのが非常に手間に感じます。 $this->af->setApp('data', $myouji) $this->af->setApp('data', $namae) としておけばほぼテンプレの変更は必要なくなるわけで。 一方で、分けておくと、ミスなどに気づきやすくなります。 普通の人はどうしてますでしょうか? 自分は完全独学なのでこういうコードデザインなどにひどく悩みます。
707 名前:nobodyさん mailto:sage [2006/12/16(土) 21:01:30 ID:???] 普通は分けると思う。 内容にまとまりがある部分は 配列でまとめて渡すのが良いんだろうけど。
708 名前:nobodyさん mailto:sage [2006/12/17(日) 01:34:22 ID:???] >>706 テンプレート内で呼び出されるテンプレートにしちゃって $this->af->setApp('myouji_data', $myouji);として smartyなら{include file="hoge.tpl" data=$app.myouji_data}で {$data}とかするのは?と言おうとしたけど EthnaはテンプレートにViewクラスが個別に作れるんだから $this->af->setApp('data', $myouji); で良いと思った。 個人的には、dataは名前が不意に衝突しそうでいやだ $person = array('myouji' => $myouji, 'namae' => $namae); $this->af->setApp('person', $person); とか、他のViewでも使う時に名前変えないですむ意味のある名前つけたいところ
709 名前:nobodyさん mailto:sage [2006/12/23(土) 19:38:14 ID:???] 今、サイト落ちてる?
710 名前:nobodyさん [2006/12/23(土) 23:49:18 ID:gjDqizfh] 落ちてるようですね。困ったーAPIDocsが見たいのに
711 名前:nobodyさん mailto:age [2006/12/24(日) 00:37:30 ID:???] サイト(というかサーバ)もふじもと神の頭脳のように強くあってほしいもんだな
712 名前:nobodyさん mailto:sage [2006/12/24(日) 01:05:05 ID:???] 同じくAPI見たい
713 名前:nobodyさん mailto:sage [2006/12/24(日) 14:19:52 ID:???] 自分でphpdocumentator使って生成せよ。
714 名前:nobodyさん mailto:sage [2006/12/25(月) 11:12:56 ID:???] ちと相談というか勘所をお聞きしたいのですが、Ethnaのサイトでは ActionClassのperformメソッドにはあまり処理内容を書かず、AppManagerに ロジックを書くことを推奨していたと思います。 しかし、ビジネスロジックの中にはサイトの中で一度しか呼ばれない 処理が多く、AppManagerがどんどん膨らんでいきます。 こういう場合もperformにビジネスロジックを書くのってやはり推奨されないんでしょうか? 一度しか呼ばれない処理なのにいちいちAppManagerクラスを見に行かねば ならないのは、返って可読性を落とすような気がするのですが・・・。
715 名前:nobodyさん mailto:sage [2006/12/25(月) 11:38:53 ID:???] >>714 程度問題かな。ActionForm値に依存しすぎる場合はAppManagerじゃなくて、 基本のActionClassに記述してそれを継承。 それでも自分はAppManagerに書くことのほうが多いです。 後で別どころで使う可能性もあるので。 または、「とりあえず」performに記述しておいて、後で「あ、前のを使う」と思えば、 その時にAppManagerに移植とかも結構やる。 ただ、一人ならいいけど複数人開発の場合は基本設計をちゃんとしないと混乱するよね。
716 名前:nobodyさん mailto:sage [2006/12/25(月) 11:55:23 ID:???] >>715 どうもです。 現在一人で開発してまして、引き継ぐ人があらわれたとしても複数人での開発には ならない規模の社内アプリです。 現在は極力AppManagerに書いてますが、ツール的なものはいいとして、ビジネス ロジックは共通化できそうなのが少ないので迷ってきました。 「とりあえず」performに書いて汎用的に使えそうなのは抽出していくって言うのも よさそうですね。 ちょっとこの路線でやってみます。
717 名前:nobodyさん mailto:sage [2006/12/27(水) 19:43:12 ID:???] アクション内で別のアクションに飛ばしたいときはどうしたらいいんでしょ... 結局、 header(Location: /?action_hoge=true); とかしてるけど。 UrlHandlerの使い方がまだよくわからん。
718 名前:nobodyさん mailto:sage [2006/12/27(水) 20:24:34 ID:???] 前の方に書いてあったけど、アクション内で、別のアクションが 呼びたくなっちゃう事自体が設計ミスらしいですよ。 処理を別クラスに作成して、それを共通で呼び出すようにした 方が良いかと。
719 名前:nobodyさん mailto:sage [2006/12/27(水) 20:28:07 ID:???] >>717 自分のしったか、だったかも・・・ >>215 あたりから読むと幸せになれるかも。
720 名前:nobodyさん mailto:sage [2006/12/28(木) 00:33:39 ID:???] >>717 ttp://dozo.matrix.jp/pear/index.php?Framework%2FEthna%2Faction こんなのも見つけてまいりました。
721 名前:nobodyさん mailto:sage [2006/12/28(木) 01:07:43 ID:???] >>717 >アクション内で別のアクションに飛ばしたいときはどうしたらいいんでしょ... すません。これ、私はこういうことを思ったことは無いんですが、 具体的にどうゆう場合にこういうことをしたい!!と思うんでしょうか? なるだけ具体的に書いてくださると、 「その場合は、***をViewに集めれば良いじゃん」 とかレスしますんで、よろしく。
722 名前:721 mailto:sage [2006/12/28(木) 01:09:30 ID:???] ちなみに、>>>215 のようなバリデートエラーの場合は=ActionFormが一緒 ということなんで、ActionClassも自動的に似通ったものになり、やっぱり ActionClassの継承を使って parent::perform(); をくし島t食っています。
723 名前:717 mailto:sage [2006/12/28(木) 12:14:25 ID:???] やっぱりManagerあたりで処理まとめて呼び出すのが一番きれいなやりかたですかね... ありがとうございます。
724 名前:nobodyさん mailto:sage [2006/12/28(木) 14:52:35 ID:???] windows環境なのですが、RAMドライブを使う以外でethnaのsessionをメモリーに 持たす方法は無いでしょうか。
725 名前:nobodyさん [2006/12/28(木) 16:24:21 ID:2NQtv/LQ] ethnaでブラウザ経由での実行じゃなくて、バッチ作ってコマプロで 実行するようなものも作れます? フレームワークのイメージ自体がちょっとできてないんですが…
726 名前:nobodyさん mailto:sage [2006/12/28(木) 18:21:33 ID:???] >>725 出来るみたいです。 labs.gree.jp/Top/Document/20060707.html#h3954b09 ゲートウェイシステム ゲートウェイシステムとは,単純にいうとコントローラをゲートウェイとして利用して, 通常のブラウザからのリクエスト,コマンドラインからの実行,XMLRPCなど (現バージョンでサポートされているのはこの3つです)のリクエストを全て「アクション」として 処理するための機構です index.phpじゃなくて、コマンドライン用のヤツを作ればいいのかな?
727 名前:nobodyさん mailto:sage [2006/12/29(金) 00:16:43 ID:???] ethna add-action-cli または ethna add-action -g=cli
728 名前:nobodyさん mailto:sage [2006/12/30(土) 00:32:59 ID:???] 2.3.0で APPID_ViewClass.phpの中で $this->af->setAppしてもテンプレで使用できないんですが、 これは仕様?
729 名前:nobodyさん mailto:sage [2006/12/30(土) 16:19:09 ID:???] >>728 普通に使えますが・・・
730 名前:728 mailto:sage [2006/12/30(土) 17:57:25 ID:???] function _setDefault(&$renderer) 内で指定するんですよね? PHP4でもいけますか?
731 名前:721 mailto:sage [2006/12/30(土) 22:27:30 ID:???] >>730 >function _setDefault(&$renderer) >内で指定するんですよね? 違う。preforward() Viewクラス全部にデフォルトで適用させたい場合は _serDefaultだけども、$rendererから$smartyを取り出して その$smartyにassignする。 取り出し方はRenderer $smarty =& $render->getEngine(); function _setDefault($renderer) { $smarty =& $render->getEngine(); $smarty->assing('test', array('hoge' => 'uki')); } とかかな。多分
732 名前:nobodyさん mailto:sage [2006/12/31(日) 15:53:49 ID:???] >>728-731 _setDefaultは、 $renderer->setProp('test', array('hoge')); でできるよ。
733 名前:nobodyさん mailto:sage [2007/01/01(月) 03:52:43 ID:???] 全てのフォームからの入力値に自動的に 特定のエスケープ関数(例えばmysql_escape_string)を賭けたい場合、 app下のAPPID_ActionClass.phpに組み込めば簡単かと思うのですが、 特定のアクション(またはフォーム値)に対しては mysql_escape_stringをかけないようにする良い方法が思いつきません。 元旦早々ですが、良いアイデアありましたらお願いします。
734 名前:nobodyさん mailto:sage [2007/01/01(月) 05:19:28 ID:???] viewの中ではAPPID_ViewClass.phpが問題なく継承されるんだけど、 action内でうまくAPPID_ActionClass.phpが継承されない。 ためしにAPPID_ActionClass.phpのperform()内で echo "エコーされるか?"; としてみたが一切認知されてないっぽい。 同じような人いませんか?
735 名前:nobodyさん mailto:sage [2007/01/01(月) 17:22:12 ID:???] >>733 Ethnaに限った話しでは無いのですが、クラスのオーバーライドという概念を 調べてみてください。 「PHPの薬箱」って本のクラスの説明が解りやすいので、機会があれば 見てみると良いと思います。
736 名前:nobodyさん mailto:sage [2007/01/01(月) 21:13:24 ID:???] 733が言いたいのはむしろ、そのオーバーライドをどう使えばいいか、 ってところのキガス
737 名前:nobodyさん mailto:sage [2007/01/01(月) 21:44:04 ID:???] オーバーライドが解っていれば、共通で実行されるメソッドを、特定アクションの 中でオーバーライド(処理無しの空メソッドを作るだけ。)すれば良いので >>733 のような質問は出ないのではなかろうか・・・。 app/actionの下に作成されている、アクション達はみんな app/APPID_ActionClass.php を継承しているということに気づいてないかな?
738 名前:734 mailto:sage [2007/01/03(水) 21:03:27 ID:???] どなたかヘルプミー
739 名前:734 mailto:sage [2007/01/03(水) 22:06:08 ID:???] ちなみになぜか APPID_ActionClass.phpのauthenticate() は機能します。 APPID_ActionClass.phpのprepare(),perform()機能しないとです・・・・
740 名前:nobodyさん mailto:sage [2007/01/03(水) 23:40:00 ID:???] エラーが再現する最低限のコードプリーズ。
741 名前:734 mailto:sage [2007/01/04(木) 00:25:50 ID:???] ああ、、、すいません、 オーバーライドされてただけの話でした・・・ orz=3 メソッドのオーバーライド(上書き)というより, 加え書き、みたいなのってないですよね・・・ ある一定部分までは同じで、アクションによってちょっとだけ 違う処理を付加する、っていう場合は appmanager使うとかしかないですかね・・・
742 名前:nobodyさん mailto:sage [2007/01/04(木) 03:23:40 ID:???] extend したほうで function perform() // 処理 return parent::perform(); } みたいにするか、 処理が異なる部分のみ切り出してテンプレートメソッド風にするとか。
743 名前:nobodyさん mailto:sage [2007/01/04(木) 17:27:26 ID:???] 入力→実行っていう画面遷移のページを作る場合はMojaviみたいに1つのActionクラスで入力用、実行用のメソッドを用意するんでしょうか? それともそれぞれのアクションクラスを作ってフォームのaction属性として連携させるんでしょうか。
744 名前:nobodyさん mailto:sage [2007/01/04(木) 23:58:29 ID:???] >>743 Mojaviは知らないし「入力用」「実行用」は色んな意味に取れて 具体的にどの処理を指してるのか解らないけど 1.画面に入力 2.登録ボタン押下 3.DB更新処理 4.結果表示 という、良く行われるであろう画面を作る場合、自分的には /app/action/アクション function prepare() { 入力チェック } function perform() { DB更新処理 ※(処理が大きくなりそうだったり、他の処理と共通化出来そう だったら「アプリケーションマネージャ」で別クラス化。 処理がちょっとで済みそうだったら直書き。) } /app/view/ビュー function preforward() { 画面表示に必要な値を取得する処理。 例) ・現在時刻取得 ・コンボボックスの内容をDBから取得 } こんな感じ。
745 名前:nobodyさん mailto:sage [2007/01/04(木) 23:59:39 ID:???] 「アプリケーションマネージャ」 ttp://ethna.jp/ethna-document-dev_guide-appobj-manager.html
746 名前:nobodyさん mailto:sage [2007/01/06(土) 08:36:33 ID:???] データベースから取得した値によって、動的にラジオボタンのnameが変わる 画面を作りたいのですが、アクション設定する入力チェックはどうやったら 動的に変更出来ますか? アクションの function prepare() の中で $this->af->validate() する前に、DBを読んで動的に入力チェックを行う事が 出来ますでしょうか?
747 名前:746 mailto:sage [2007/01/06(土) 08:38:07 ID:???] >>746 × アクション設定する ○ アクションで設定する
748 名前:nobodyさん mailto:sage [2007/01/06(土) 15:46:33 ID:???] $res1 = new m9('a')->("プギャァ~"); ↑これは、もっと評価されるべきじゃないの?w
749 名前:nobodyさん [2007/01/12(金) 23:14:55 ID:l7BIz4fN] ほしゅ
750 名前:nobodyさん mailto:sage [2007/01/12(金) 23:36:56 ID:???] アプリケーションマネージャの使い方が分からんとです。 PHP5+Ethna2.3.1です。 単純化した例で申し訳ないんですが、 /*マネージャ*/ class Nichan_MonaManager extends Ethna_AppManager{ function giko(){ //いろいろ処理して、とりあえず・・・ $neko = "にゃ〜"; } } /*コントローラ*/ var $manager = array( 'Test' => 'Mona', ); /*アクション*/ class Nichan_Action_Index extends Nichan_ActionClass{ function perform(){ $this->Test = $this->backend->getManager('Test'); $this->Test->giko(); $this->af->setApp('neko', $neko); return 'index'; } } /*テンプレート*/ {$app.neko}
751 名前:750 mailto:sage [2007/01/12(金) 23:37:28 ID:???] こんな感じで、テンプレートの部分で「にゃ〜」を表示させたいんですが、 Call to a member function giko() on a non-object というエラーが出ます。 クラスとか初めて使うので、何かが根本的に間違ってる気がするんですが、 自分では気が付けず。 どなたかご指導お願いします。
752 名前:750 mailto:sage [2007/01/13(土) 01:19:54 ID:???] 自己解決しました。 コントローラのvarは不要、 アクションで $this->Mona = $this->backend->getManager('Mona'); $neko = $this->Toppage->giko(); $this->af->setApp('neko', $neko); で出来ました。 Ethnaのドキュメント、新旧入り乱れてて分かりづらいよ・・・
753 名前:721 mailto:sage [2007/01/13(土) 13:48:05 ID:???] >>752 >コントローラのvarは不要、 だね。2.3以降は$managerメンバを使う必要が無くなってるから。 Managerを呼び出す方法は幾つかあるみたいだけど、 基本的に自分も>>750 と同じ方法でやってる。 あと、PHP5だとAppManager/AppObject/ActionClass/ViewClassでは $this->backend->getManager('Mona')->giko(); で行ける。2段階にしなくてもオK。 自分は $this->backend->getManager('Mona')って長いのが嫌なので、上記の4つの クラス全部にgetM()というメソッドを追加して $this->getM('Mona') とかしてる。
754 名前:721 mailto:sage [2007/01/13(土) 13:58:50 ID:???] >>752 あと、アクションで$this->MonaってやってMonaメンバに Managerを保存してるみたいなんだけど、EthnaのgetManagerは (というよりFactory?)一度newしたManagerは使い回してくれるので 何度もgetManagerしてOK。ViewでもActionでも同じインスタンスを 使ってくれる。
755 名前:nobodyさん mailto:sage [2007/01/14(日) 11:09:33 ID:???] なんでPHPって.演算子じゃなくて->演算子にしたんだろうな フレームワーク使ってるともう->書きまくるのたるくてしょうがない
756 名前:nobodyさん mailto:sage [2007/01/14(日) 11:31:05 ID:???] >>755 >なんでPHPって.演算子じゃなくて->演算子にしたんだろうな perlの影響じゃねの?
757 名前:nobodyさん mailto:sage [2007/01/14(日) 14:46:24 ID:???] タイピングがへたくそなだけだろ
758 名前:750 mailto:sage [2007/01/14(日) 23:00:46 ID:???] >>753 おっしゃるとおり、1段階でも出来ました。スゴス 2段階も長いけど、1段階でもまだ長いっすよね。 そのgetM()メソッドというやつ、デフォで組み込んでて欲しいとか思ってみたり。 ちなみに、MonaメンバにManagerを保存してたのは、 $thisの使い方が分かってなかっただけです。 今もあんま分かってないですが。 Ethna使いながらオブジェクト指向とかも勉強しようかなって感じです。 いま、非FWで作りかけてたものを移植してるんですが、 使えば使うほどFWの便利さが身にしみますね。
759 名前:nobodyさん mailto:sage [2007/01/15(月) 01:59:38 ID:???] 配列、連想配列、クラス これの使い方が解ったら、FWの便利さが飛躍的に上がる。
760 名前:nobodyさん mailto:sage [2007/01/15(月) 02:02:42 ID:???] クラスはともかく連想配列はFW以前の知識だろう
761 名前:nobodyさん mailto:sage [2007/01/15(月) 21:50:03 ID:???] >>759 オブジェクト指向がわからない人はFWを使おうとしても挫折するんとちゃうか?
762 名前:nobodyさん mailto:sage [2007/01/15(月) 21:53:16 ID:???] >>760 > クラスはともかく連想配列はFW以前の知識だろう いや、全部フレームワーク以前の知識だと思うぞ
763 名前:nobodyさん mailto:Ethna [2007/01/15(月) 22:26:13 ID:???] ethna.jp/ethna-document-dev_guide-urlhandler.html >>この中の$action_mapを設定することでUrlHandlerが利用できます。デフォルトではなにもしません。 何でデフォルトで何もしないんだろう? こんなんはsymfonyみたいにスケルトンを作成した段階で 自動的にアクセスできるようにすればいいんジャマイカ? 上記の例で行くと ethna add-action echo_msg ってやった瞬間に /echo/msgでアクセスできるようにしたほうが便利なのでは?
764 名前:nobodyさん mailto:sage [2007/01/16(火) 01:37:46 ID:???] >>763 俺はそうするように書き換えちゃったよ
765 名前:nobodyさん mailto:sage [2007/01/16(火) 12:51:48 ID:???] >>763 >何でデフォルトで何もしないんだろう? 後方互換性
766 名前:nobodyさん mailto:sage [2007/01/18(木) 04:05:03 ID:???] マネージャってapp直下に作られるけど、 数が多いんで、app/managerとかのディレクトリに入れることは可能? ただ入れるだけだと、Fatal errorが出るんだよね。 どこを弄れば、読み込んでくれるのでしょうか?
767 名前:nobodyさん mailto:sage [2007/01/18(木) 11:20:20 ID:???] >>766 コントローラの上のほうで、 /** include_pathの設定(アプリケーションディレクトリを追加) */ $app = BASE . "/app"; $lib = BASE . "/lib"; $manager = $app. "/manager"; ini_set('include_path', ini_get('include_path') . PATH_SEPARATOR . implode(PATH_SEPARATOR, array($app, $lib, $manager))); とかしてやれば動くんじゃない? 確かめてないけど。
768 名前:nobodyさん mailto:sage [2007/01/18(木) 22:34:03 ID:???] >>767 d!動きますた。 app直下のものも動いちゃうけど、とりあえずこれでいってみます。
769 名前:nobodyさん mailto:sage [2007/01/21(日) 01:10:24 ID:???] >>764 何処を書き換えればいけるかな? >>765 kwsk
770 名前:764 mailto:sage [2007/01/21(日) 04:53:17 ID:???] >>769 俺も柔軟な方法があったら知りたいんだがw とりあえずはUrlHandlerのgetInstanceメソッドをオーバーライドして アクションのマッピングが見つからなかった時に マッピング設定をするようにしたら出来るよ 当然値を自動的にセットはしないし (ルール設けてデフォルトのマッピングをそう生成すればいいんだけど) smartyのurl関数とかも使えないんじゃないかと思う 俺の場合は元々そこら辺をフォローするマネージャとか作ってあったから どっちも使えるようマージするだけでよかったんだけどね
771 名前:769 mailto:sage [2007/01/21(日) 11:31:55 ID:???] >>770 めんどくさいなぁ 例えばスケルトンを作成する際に-url等のオプションをつければ 【利用者が何も意識しなくても】 ステキURLでアクセス出来るようにして欲しいな。 つまり>>763 の例で行くと ethna add-action -url echo_msg ↓ 特に設定を変更することなく /echo/msg でアクセス ↓ (゚д゚)ウマー
772 名前:764 mailto:sage [2007/01/21(日) 15:51:48 ID:???] >>771 無い袖は振れんのだ しょうがない 一応、UrlHandler自体もうちょっとどうにかしようという流れはあるみたいだし それに期待じゃないかね 俺は足りない部分はさくっと追加しちゃって後は本家の実装待ちみたいな感じだw 上記の変更も実質数行足すだけだったし 不満はあるけどEthnaは改造しやすくていいんだよねぇ(俺でも改造の道筋がすぐ見えるという意味)
773 名前:nobodyさん mailto:sage [2007/01/21(日) 22:50:42 ID:???] 1つ前のアクション取得する簡単な方法ってないでしょうか。 validate()した後、エラーがある場合の 遷移先を自動的に指定したいのです。 フォーム値に渡す方法しか思いつきませんでした。 もっと簡単な方法があったらおながいします
774 名前:nobodyさん [2007/01/22(月) 10:55:40 ID:grOsWXoX] > 1つ前のアクション取得する簡単な方法ってないでしょうか。 セッション使うことにこだわらなければ、セッション使う。 ViewClass::forward()のオーバーライドでその決定後のactionを保存。 っつーか、>>773 の1つ前というのが、1リクエスト前のactionという意味ならだけど。 そうではなく、PHP内の内部処理内でって言うなら、PHP5限定で現在のActionClass名 __CLASS__からActionNameを解析するしかないな。 解析はViewClassのメソッドに付け加えて、validate()でエラーが出た際はerror_viewとか適当な クラスを作ってそこでジャンプ。 んー。Backendクラスもオーバーライドしないといかんかな。
775 名前:nobodyさん [2007/01/23(火) 23:33:59 ID:OL4nj+JT] viewで、 $tests= array("1"=>"さいしょ","2"=>"つぎ","3"=>"さいご"); $this->af->setApp('tests',$tests); としておいて、 tplで、 {select name=test_select empty="選択してください" list=$app.tests} と、してるんだが・・ 出力が、 <select name="test_select"> <option value="">選択してください</option> <option value="1" >ぜ/option> <option value="2" >ぜ/option> <option value="3" >ぜ/option> という、わけのわからない化け方をするし、 最初の一文字しか出てこないし、なんだかわかりません。 どう解決すればよいか、力をお貸しくださいませm(_ _)m
776 名前:721 mailto:sage [2007/01/23(火) 23:40:30 ID:???] >>775 最初の一文字しか出てこないのは、多分PHPにおいて文字列も配列として 認識されるのが影響してると思う。 例えば、 $str = "abcde"; echo $str[0]; とすると、aって出る。 これを$strがマルチバイトの場合でバイト欠損になってるんだと思う。
777 名前:775 mailto:sage [2007/01/23(火) 23:50:58 ID:???] >>776 そ、そうなの?? 若干Ethnaから離れて大変申し訳ないですが。。 もしそうだとすると、配列を渡すようなsmarty_functionのselectとかcheckboxとか、 全滅ってことになるよねぇ??
778 名前:nobodyさん mailto:sage [2007/01/24(水) 00:43:32 ID:???] 化けるのは、ただ単に文字コードの問題じゃなくて?
779 名前:775 mailto:sage [2007/01/24(水) 00:52:45 ID:???] たぶん文字コードではないと思いますよ。 print_rで配列出すとブラウザ上に Array ( [1] => さいしょ [2] => つぎ [3] => さいご ) って中身が出てるので。
780 名前:778 mailto:sage [2007/01/24(水) 00:59:51 ID:???] select は smarty のプラグインかなんかでしょ? そのプラグインの中で値がどうなってるか調べれば委員で内科医。
781 名前:nobodyさん mailto:sage [2007/01/24(水) 01:10:21 ID:???] >>775 使い方が違うだけだろ $tests = array ( "1" => array ('name' => "さいしょ"), "2" => array ('name' => "つぎ"), "3" => array ('name' => "さいご"), );
782 名前:775 mailto:sage [2007/01/24(水) 22:01:26 ID:???] >>781 大変すまんかった。 おっしゃるとおり。
783 名前:nobodyさん mailto:sage [2007/01/24(水) 23:56:26 ID:???] ethna も sandboxほしいね。
784 名前:nobodyさん mailto:sage [2007/02/01(木) 01:29:35 ID:???] ほしゅ
785 名前:nobodyさん [2007/02/03(土) 16:20:22 ID:F0daih5C] Ethnaを勉強するのって公式サイトを見ての独学しかないんですか? 書籍を探しても見つからなかったのですが・・・ 良い勉強法をご存知でしたらご教示ください(´・ω・`)
786 名前:nobodyさん mailto:sage [2007/02/03(土) 16:44:49 ID:???] >>785 ムック系の本の中で何度か取り扱われた事があるからそれを探してみると とっかかりとしては良いかも 後は、Ethnaの公式とかgree lab見るとかコミッタの人のblogの記事を読むとか 多少内容は古いと思うけど独自にtips書いてる人もいる ようするにぐぐれって事かw 後はEthnaはコードが読みやすいフレームワークだと思うから 実行順とかわからない所のコード追っかけてみたりした方がいろんな意味で 勉強になって良いと思う
787 名前:nobodyさん mailto:sage [2007/02/03(土) 16:51:05 ID:???] >>786 なるほど、分かりました。 手始めにソースコード読んで勉強してみます! ありがとうございましたm(_ _)m
788 名前:nobodyさん mailto:age [2007/02/04(日) 10:32:16 ID:???] 外国産のPHPフレームワークばかりに目が向いていたが、Ethnaの使い方も勉強してみようかな
789 名前:nobodyさん mailto:sage [2007/02/05(月) 12:06:34 ID:???] EthnaのUrlHandlerって、アクションを一つ一つaction_mapに書いていかないといけないのでしょうか? ethna.jp/ethna-document-dev_guide-urlhandler.html ここを読んだのですが、いまいちピンときません。 hoge/foo hoge/bar とあった場合に、 hoge/index.php?action_foo=true hoge/index.php?action_bar=true となるように、一つの設定ですませたいのですが、そういうことは可能でしょうか。
790 名前:nobodyさん mailto:sage [2007/02/05(月) 18:50:46 ID:???] ttp://www.endlessbattle.net/wiki/ おちっぱなしだけど...大丈夫なのかな...
791 名前:nobodyさん mailto:sage [2007/02/05(月) 23:01:43 ID:???] ethnaで作ったスクリプトをCGIとして動作させたい場合、 どうすればいいでしょうか? ちなみに普通のPHPであれば、 #!/usr/bin/php をつければ、CGIとして動作する共用レンタルサーバーです。
792 名前:nobodyさん mailto:sage [2007/02/05(月) 23:12:49 ID:???] AppObjectの使いどころが良くわからない・・・ クエリ発行するには AppManager->db->query(); でいいんだよね? AppObjectって必要なの?
793 名前:nobodyさん mailto:sage [2007/02/06(火) 00:41:00 ID:???] 私は使ってません。
794 名前:nobodyさん mailto:sage [2007/02/06(火) 15:35:18 ID:???] /etc/[APPID]-ini.php 内で セッション値やアクションフォーム値を使用するためには どうすればいいでしょうか? $this->session->get('hoge') でやってみましたが、Call to a member function on a non-object が出ました。
795 名前:nobodyさん mailto:sage [2007/02/06(火) 15:55:40 ID:???] if( !empty( $this->af->get("hoge") ) ){ } とするとエラーが出ます。 $hoge = $this->af->get("hoge"); if( !empty( $hoge ) ){ } ならうまくいきます。へるぷみー
796 名前:nobodyさん mailto:sage [2007/02/06(火) 18:02:29 ID:???] セッションの値をsmarty内で{$session.id}みたいな感じで 使えませんかね? setApp するのがだるいのです。
797 名前:nobodyさん mailto:sage [2007/02/06(火) 19:35:30 ID:???] >>795 PHP4だからじゃね? >>796 [APP_ID]_ViewClass.phpの _setDefaultメソッドでアサインすれば?
798 名前:nobodyさん mailto:sage [2007/02/06(火) 19:52:01 ID:???] >>795 emptyで調べられるのは変数のみ jp.php.net/manual/ja/function.empty.php
799 名前:794 mailto:sage [2007/02/06(火) 20:22:16 ID:???] >>797 レスありがとうございます。 おっしゃるとおり PHP4です。 PHP5にせずに何とかする方法はないでしょうか。 あとみなさんPHP5でエスナってるんでしょうか?
800 名前:721 mailto:sage [2007/02/06(火) 23:30:31 ID:???] >>794 >/etc/[APPID]-ini.php >内で セッション値やアクションフォーム値を使用するためには >どうすればいいでしょうか? そんなやり方はしないヨ。 /etc/hogehoge-ini.php には、設定値を書くから、設定値をセッションで上書きするって言う使い方はしない。 設定値はethna_configオブジェクト(のサブクラス)として存在してて、 そのロードはControllerのコンストラクタで行われてて、それってEthnaの起動のほぼ直後。 もちろん、Sessionが始まるより遥か前。 そもそも、セッションオブジェクトやアクションフォームオブジェクトは AppManager/AppObject/ActionClass/ViewClass内のみで使われることを 想定としてるから、そんな変なところではアクセスできるわけがない。
801 名前:nobodyさん mailto:sage [2007/02/07(水) 09:06:56 ID:???] >>793 792です。 自前のクラスを使うことにしました、ありがとう。 いろいろ調べてみて、現状ではAppObjectを他のフルスタックフレームワークのModelと同じように考えてはいけないと思いました。 何でこんな中途半端なものがくっついてるんだろう? 混乱するだけなのにな・・・。
802 名前:nobodyさん [2007/02/07(水) 17:46:41 ID:hhcgJkB/] >何でこんな中途半端なものがくっついてるんだろう? 私はメチャメチャ使っています。 とにかく、ActionClassの行数を増やしたくないので、とりあえずAppManager/AppObjectにという感じで。
803 名前:nobodyさん mailto:sage [2007/02/10(土) 12:18:29 ID:???] .tplが勝手にキャッシュされて htmlミスりまくりの自分としてはテスト中はかなり不便なんですが、 どこかでキャッシュの設定はできるんでしょうか? smartyのキャッシュ設定はoffになってました。 本家でキャッシュで調べましたが、見つかりませんでした。
804 名前:nobodyさん mailto:sage [2007/02/11(日) 11:49:01 ID:???] アクションのフォワードってどうやるんですか?
805 名前:nobodyさん mailto:sage [2007/02/11(日) 15:03:58 ID:???] >>804 できません。
806 名前:nobodyさん mailto:sage [2007/02/11(日) 23:05:45 ID:???] >>804 やはりリダイレクトかアクションの継承になるんでしょうか。
807 名前:nobodyさん mailto:sage [2007/02/12(月) 01:51:26 ID:???] >>806 継承だったらこんな感じになるのでしょうか? Base_Action { function doHoge() { } function doFuga() { } } class Action_A extends Base_Action { function perform() { $this->doHoge(); } } class Action_B extends Base_Action { function perform() { $this->doHoge(); $this->doFuga(); } }
808 名前:nobodyさん [2007/02/14(水) 23:01:46 ID:pcigeSJ1] 行数のかさむコードには誰も反応しない。。w
809 名前:nobodyさん mailto:sage [2007/02/15(木) 00:08:38 ID:???] 行数がかさまないように、括弧の前後にある改行を消せばいいの?
810 名前:721 mailto:sage [2007/02/15(木) 03:31:47 ID:???] >>808 >行数のかさむコードには誰も反応しない というか、何したいかいまいちよくわからん・・・・。 アクションのフォワードとかリダイレクトとかそれっぽい言葉があるが、 とりあえず言葉を使ってるだけ感がいっぱいで。
811 名前:nobodyさん mailto:sage [2007/02/16(金) 17:19:24 ID:???] プロジェクトディレクトリまでの絶対パスの取得方法教えてくださいまし。 APPID/lib 内のファイルを操作したいです。
812 名前:nobodyさん mailto:sage [2007/02/17(土) 12:43:45 ID:???] >>811 $_SERVER["SCRIPT_FILENAME"]からwww/index.phpを抜くのじゃ駄目か?
813 名前:nobodyさん mailto:sage [2007/02/17(土) 13:00:20 ID:???] 普通に__FILE__使えばいいだけでは。
814 名前:nobodyさん mailto:sage [2007/02/19(月) 17:44:59 ID:???] ethnaでmod_rewriteが上手く使えない。 ?や&で切れる。どうやればいいですか?
815 名前:>>814 マルチ乙www mailto:ワロタヨ [2007/02/19(月) 23:38:21 ID:???] mixi.jp/view_bbs.pl?id=11662178&comm_id=261369 19: 普通 ( mixi.jp/show_friend.pl?id=2134264 ) つい先日から、ethnaを使い始めたものですが、mod_rewriteで上手く飛ばせないので、どうかご教授ください。 簡単なブックマーク的なものを作成しようとしてるのですが、URLを entry?uri=hoehoge をentry/hogehogeのようにしたいのですが、hogehogeに?や&などが含むとそこでとぎれてしまいます。 簡単に、 RewriteRule ^entry/(.+) /entry?uri=$1 [L] や RewriteRule ^entry/(.+) /entry?url=$1%{QUERY_STRING} [L] こんふうに書いたのですが、これがいけないのでしょうか? ?や&が含まれなければ、全てを取得できるのですが。。 はてブさんとかのエントリーと比較した場合、http://の://がはてブさんだとそのままだったのですが、自分のエントリーを見ると、http%3A%2F%2Fのようにエンコードされてしまいます。 これが原因なのでしょうか? Smarty側のほうには、エスケープさせるsetAppNEがありますがこれは表示の問題で今回とは関係ないと思いますし。 もしかしたら、mod_rewriteの問題でここでの質問はおかしかったらすいません。すぐに削除します。 ただ、ethnaのエスケープ関連の問題でしたら、どうか解決法をご教授くださいませ。 よろしくお願いします。
816 名前:nobodyさん mailto:sage [2007/02/20(火) 00:59:16 ID:???] 解決法。 もっと簡単なプログラムから勉強し直す。
817 名前:nobodyさん mailto:sage [2007/02/21(水) 05:44:31 ID:???] Smartyにcache_idを渡してページごとに複数のキャッシュを持たしたいんだけど、 できなさそうですね?
818 名前:nobodyさん mailto:sage [2007/02/22(木) 14:22:50 ID:???] >>817 ここはEthnaのスレ よそで聞け ちなみに余裕で出来るぞ
819 名前:nobodyさん mailto:sage [2007/02/22(木) 15:16:44 ID:???] Ethnaでって話しだろ?
820 名前:nobodyさん mailto:sage [2007/02/23(金) 04:10:03 ID:???] >>818 Ethnaでの話ですよ、もちろん。 >>819 その通りです ちょいと改造して解決しました
821 名前:nobodyさん mailto:sage [2007/03/01(木) 00:08:12 ID:???] wamp環境でEthna使ってるんだけど、ethnaコマンドが黙り込むのはなぜ? ethna add-action --basedir=dir sample とかやるとき。
822 名前:nobodyさん [2007/03/01(木) 16:07:38 ID:ue5nOCQJ] AppObjectで SQLの関数使いたいとき、 たとえば update some_table set some_date = now() where some_id = 1; ↑こんなかんじのことをAppObjectでやりたいときって どうやればいいんでしょう ちなみにPostgreSQLです
823 名前:nobodyさん mailto:sage [2007/03/02(金) 00:59:24 ID:???] >>822 今のところ確かできなかったはず。 そのうち出来るようにしたいと言ってた気がする。
824 名前:nobodyさん mailto:sage [2007/03/02(金) 01:00:04 ID:???] そのうちじゃなくて将来的に出来るようにしたいと言ってたんだったかな。 どっちでもいいが。