【PHP】Ethna part.2【国産フレームワーク】
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2007/08/03(金) 08:15:18ID:BNMV6wHxEthna -PHPウェブアプリケーションフレームワーク-
http://ethna.jp/
SourceForge.jp: Project Info - Ethna
http://sourceforge.jp/projects/ethna/
クラスドキュメント(phpDocumentor)
http://ethna.jp/doc/
前スレ
【PHPフレームワーク】Ethna【スケルトン自動作成】
http://pc11.2ch.net/test/read.cgi/php/1123070439/
0180178
2008/05/30(金) 10:07:06ID:mNLSpKjeどうもです。
$use_validator_plugin に falseを設定したら動きました。
が、pluginが使えないと色々面倒ですね。
エラーメッセージを全体的に変更したくて、Ethna本体を変更しないように
ってなると、やはり Pluginを自分で書くなりするしかないですか?
たとえば未入力のエラーは標準が
{form}を入力してください
ですが
{form}を入力してくださいね♪
にしたい場合など、みなさんはどうしているんでしょうか?
$form_template とか使うんでしょうか?
0181nobodyさん
2008/05/30(金) 12:00:15ID:???'required_error' => '{form}を入力してくださいね♪ '
0182nobodyさん
2008/06/02(月) 10:16:58ID:???iframeのやつね
誰か連絡してやってくれ・・・
0183nobodyさん
2008/06/02(月) 16:14:36ID:aKm7Z/AW0185nobodyさん
2008/06/02(月) 20:09:21ID:???0186nobodyさん
2008/06/02(月) 22:36:44ID:???リリース出たね
0187nobodyさん
2008/06/03(火) 04:54:20ID:???その方が怖いんだが
0188nobodyさん
2008/06/03(火) 05:15:50ID:???こえーな
0189nobodyさん
2008/06/03(火) 06:03:26ID:GVCDkPaZ上流でクラックされてたらどうしようもない
サーバ単位の感染の比じゃねーぞ
0190nobodyさん
2008/06/03(火) 06:30:55ID:???ルータと同じIPを名乗るマシンがいたんだってよ。ひどいもんだな。
0191nobodyさん
2008/06/03(火) 09:34:43ID:???0192nobodyさん
2008/06/03(火) 17:20:00ID:khCiq63dところで、Ethnaで アクションからアクションを呼びたい場合って同かけばいいのでしょうか?
今作っているのがバッチ処理の関係なんですけど、バッチ処理をコントロールする
アクションがいて、条件によってサブの処理アクションを呼び出したいんですけど...
/batch.php <= 一定時間ごとに起動
/batch/proc1 <= サブアクション
/batch/proc2 〃
/batch/proc3 〃
あと、2.3.5がリリースされましたが、2.3.2からはそのままアップデート
して何か問題ありますか?
0194nobodyさん
2008/06/03(火) 20:13:41ID:khCiq63dどうもです。
マニュアル見ててわかりました。
$this->backend->perform($action_name);
を perform()に書いてあげればいいみたいですね。
0196nobodyさん
2008/06/10(火) 10:19:27ID:w4tQWM9Z$this->session->isStart() してもtrueが返らないのは仕様ですか?
$this->session->isStart(true)とすれば返るんですが...
Ethna_Session::start()のなかで $this->anonymousに代入していないのは
わざとですか?
$_SESSION['__anonymous__'] と Ethna_Session::anonymouse には何か使い
分けている理由があるのですか?
0197nobodyさん
2008/06/11(水) 08:10:19ID:???auto_startとか。
あと匿名と通常のセッションを同時に使い分けることはできない。
気にくわないならEthna_Sessionを継承しる。
0198JK
2008/06/11(水) 08:31:19ID:xujtuY+cソース見て見れ!
Ethna_Session::start()
で $anonymousに代入していないから
restoreが呼ばれてからじゃないと
isAnonymous() で取得できないから、isStart()が正常な値を返せない
これは仕様なのか?
ログイン処理で匿名から、通常のセッションに切り替える処理を入れたんだが
ログインチェック処理が何故かうまく通らないから調べたら、そうなっていた
start()
ttp://ethna.jp/doc/__filesource/fsource_Ethna__classEthna_Session.php.html#a142
isStart()
ttp://ethna.jp/doc/__filesource/fsource_Ethna__classEthna_Session.php.html#a276
isAnonymous()
ttp://ethna.jp/doc/__filesource/fsource_Ethna__classEthna_Session.php.html#a295
0201JK
2008/06/11(水) 21:08:49ID:xujtuY+cだから、切り替えたいんだってば。
というより。
Anonymous関係なく、 session->start()した直後 isStart()よんでみ?
0202nobodyさん
2008/06/11(水) 21:59:31ID:???start後はbool(true)になるけど?
0203nobodyさん
2008/06/11(水) 22:07:52ID:???匿名セッションをdestroy()してから、そのまま通常セッションをstart()してもだめってこと。
0204JK
2008/06/11(水) 23:40:12ID:xujtuY+cなるほど、そういう説明なら納得。
ログイン前の情報を匿名セッションで保存していて、ログイン後にそれらの
情報を扱いたい場合ってどうしているんですか?
Ethna_Sessionを new して $this->session に渡しちゃうとかですか?
0205nobodyさん
2008/06/15(日) 01:00:02ID:???「匿名セッション」=「Ethnaアプリではないアプリが開始したセッションを使うため」かと。
0206JK
2008/06/15(日) 01:48:12ID:vmTqGR6A実はよくわかってないのです。
匿名=アプリには非ログインだけど、セッションを使いたい
非匿名=アプリにログイン状態
かな〜と、勝手に思っていました。
たとえばログインのアクションを起こす直前の情報を匿名状態で持っていて
ログインが必要なアクションを起こした場合にログイン画面へジャンプ。
ログイン処理が正常に済んだら、保存していた情報でページにジャンプしたり
フォームに入力したりする。
一応ロールっぽい概念は持っているんだけど、一番簡単なログインチェックは
isStart() を呼ぶだけで出来るから便利だなぁなどと思っていたけど、
ちょっと違うのかな?
0207nobodyさん
2008/06/15(日) 11:45:46ID:???ログインしたらセッションの中にフラグを立てる。
あとはisStart()じゃなくてそのフラグを確認するだけ。
0208JK
2008/06/15(日) 17:30:32ID:vmTqGR6Aえーと、こうなったいきさつを少しだけ、ethnaのサイトに isStart()で
ログインをチェックしているサンプルがあってセッションスタート=ログイン
状態というような感じのサンプルでした。
それでそれを元に開発を進めていったんですが、非ログイン状態でもセッション
を使って何かしたいなぁ。となったときにセッションを明示的に開始していないと
セッションが使えないという罠にはまり、しばらく悩む。
で、ソースを眺めていたら、匿名というのを見つけて、匿名時はisStart()が
falseを返すという性質があるなぁそれなら。
となったわけです。
普通に考えたら、セッションにフラグを持つのが正解ですね。
事実FWを使わないときはそうやって書いていたし...
逆切れすみませんでした。
PHP全般とおしていえることですが、無駄にセッションを開始したくない場合
ってどうやるのが正解ですか?
sessionのauto_startを無効にして
if (!empty($_COOKIE['SESSID'])){
session_id($_COOKIE['SESSID']);
session_start();
}
というような感じでしょうか?
0209nobodyさん
2008/06/24(火) 20:05:23ID:et7OSP74たぶんそれで問題なあいと思うよ。
まぁそんなに神経質にならなくてもGCがうまいことやってくれます。
ところで、過疎化しているから回答がつかないかもしれないけど質問。
HiddenVarsを使うという記事を見つけたのですが、これって
1.input 2.check 3.do という 3phaseで処理する場合 2で validate
しても 2と3の間でデータを書き換えできますよね?
3の直前に validateを入れたとしても書き換えたデータがそれなりの
ものであれば、2でチェックした内容と違うもので更新できますね?
さらにいうろ 3のアクションのみでデータを登録できちゃうから、
不正登録とか連投ができますよね?
これを防ぐにはセッションやチェックファイル、DBなどを使わないと
だめですよね?
何かいいアイディアありますか?
0211nobodyさん
2008/07/01(火) 08:37:05ID:2M+ISpJVどのように書けばいいのでしょうか?
例えば会員情報に会員状態を表す status(仮登録、本登録、退会、削除)があり、
付随するデータにそのデータの状態をあらわす status(下書き、公開、閲覧停止、削除)
があったりします。
0212nobodyさん
2008/07/01(火) 11:34:32ID:???0213nobodyさん
2008/07/03(木) 08:29:19ID:cyN9Rfkcおまいの自作自演だったりして、このレスもw
0214nobodyさん
2008/07/28(月) 10:13:22ID:YSIM2iDa$this->backend->perform() でサブアクションを実行したいのですが、
$form要素は呼び出し側のものしか反映されていないようです。
サブアクションのアクションクラスで$form要素を定義したいのですが
どのように書けばいいのでしょうか?
0215214
2008/07/28(月) 10:25:20ID:YSIM2iDa>サブアクションのアクションクラスで$form要素を定義したいのですが
>どのように書けばいいのでしょうか?
サブアクションのアクションフォームクラスで$form要素を定義したいのですが
どのように書けばいいのでしょうか?
です。
よろしくお願いいたします。
0216nobodyさん
2008/07/28(月) 14:37:54ID:???0217nobodyさん
2008/07/28(月) 21:06:11ID:???そもそもチミは$formの定義をなんだと思ってるのかね・・・。
ActionClassと一対一なんだよ。
サブアクションとか勝手に言っても、それは勝手に言ってるだけだから
自分でちゃんとActionformもnewして_setFormDefしたまえ。
0218nobodyさん
2008/10/01(水) 11:11:33ID:???0219nobodyさん
2008/10/01(水) 22:42:24ID:???0220nobodyさん
2008/10/14(火) 23:49:51ID:???0222nobodyさん
2008/12/15(月) 15:11:08ID:???0223nobodyさん
2009/01/12(月) 20:55:45ID:ZFy7iIA6Ethnaも腐ったフレームワークと見られるようになりました
0224nobodyさん
2009/03/01(日) 19:57:05ID:Hv9B/Cgp手始めに↑を動かしてみたんですが、
エラーメッセージが2重に出てしまっています。
例えば、全ての項目を空にして送信ボタンを押した場合に
以下のようなエラーメッセージが表示されてしまいます。
* メールアドレス が入力されていません
* パスワード が入力されていません
* パスワード(確認) が入力されていません
* メールアドレス が入力されていません
* パスワード が入力されていません
* パスワード(確認) が入力されていません
2重のエラーメッセージが表示されないようにするには、
$errorsを自前で処理にしないといけないのでしょうか?
環境:
Ethna 2.5.0-preview3
0225224
2009/03/01(日) 22:40:13ID:???prepare()メソッドにvar_dump($this->af->validate());を書いていた為に
エラーが2重で出力されていたようです。
function prepare()
{
if ($this->af->validate() > 0) {
var_dump($this->af->validate());
return 'index';
}
return null;
}
var_dump($this->af->validate());を削除したら2重で表示することはなくなりました。
0226nobodyさん
2009/07/30(木) 12:43:43ID:???どのページにアクセスしてもメンテ中画面に飛ばす方法ないですか?
0227nobodyさん
2009/07/30(木) 12:48:49ID:XFFHqckQ・・・って前の書き込み5ヶ月前かよ・・・。
0228nobodyさん
2009/07/30(木) 22:16:06ID:???決まったActionしかしないってことにさせればいい。
エントリポイントを1つにルーティングしてるなら、そのエントリポイントの
main()の第2引数をarray('undermaintainance')にしちゃえば。
たくさんエントリポイントがあるなら、Controllerの
getActionFormNameをoverrideして、つねに'undermaintainace'の
Stringを返すようにすれば良いんじゃない?
0229nobodyさん
2009/07/31(金) 09:14:02ID:???Apacheなら.htaccess一個書けば済む
0231nobodyさん
2009/08/25(火) 11:28:16ID:X6yGpm6mこれ使って作られたオープンソースものがあれば教えて欲しいと思ったんだけど
0232nobodyさん
2009/08/26(水) 16:38:32ID:UZkILcW9質問とかしていいのかな?
<select name="aaa" id="aaa" size="7" multiple class="bbb">
{foreach from=$app.hoge item=item}
<option value="{$item.hoge}">{$item.fuga}</option>
{/foreach}
</select>
と、tplで書いています。
ここに出されたデータをアクションの方で
$this->af->get('????');
って風に取り出したいんです。
やってみた事↓
[action側]
'aaa'=>array(
'type'=>array(VAR_TYPE_INT),
'name'=>'ほげ',
),
[tpl側]
上のname="aaa"をname="aaa[]"に
[action側]
$this->af->get('aaa');
結果はNULLでした…。
<input type=~.....
のつもりでやってたんですけど…どうにかしてselectに入ったデータって取り出せないですかね。
0233nobodyさん
2009/08/31(月) 14:48:44ID:ueVwiefaそもそもとれないとプログラムとしておかしいだろ?
0234232
2009/09/03(木) 14:48:01ID:42dHYBvA別のややこしい方法で取ったよ。
0235nobodyさん
2009/09/29(火) 11:04:09ID:0+eTXppc検索前の画面でラジオボタン1、2とテキストボックスがあって
2を選んだ場合はテキストボックスが使えなくなる(disables)
検索する前に、2のラジオボタンが選択されてたら、検索後の画面で2のラジオボタンが選択されたままになってて、
テキストボックスは使えないまま表示される。
って事がしたいんですけどね。
現在は最初の読み込みでラジオボタンどっちも選択されてないし、検索後もどっちからも外れ、
テキストボックスの使用不可もはずれちゃう状態…。
1のラジオボタンに<input.......checked = true />って入れてみたら
最初の読み込みではラジオボタン1にチェック入るようになったのは良いんだけど、
2を選んで検索した後も1が選択されてるんですよね…。
誰か解決策知ってる方いらっしゃったらよろしくお願いします。
0236235
2009/09/29(火) 11:11:57ID:0+eTXppc0237235
2009/09/29(火) 11:12:36ID:0+eTXppc0238235
2009/09/29(火) 11:13:21ID:0+eTXppcラジオボタンの問題は自己解決しました。
0239nobodyさん
2009/09/29(火) 23:19:45ID:???うーん、ActionFormからHTMLにdisabledを入れるのって
今時のやり方じゃない感じがする。
disabledってあくまで補助だから、補助は補助らしくjavascriptで後付け設定かなぁ。
しかも、radioとtextの連動だからなおさらその感じがする。
自分だったら、適当にradioとtextにid振って
$(function(){});
か
Event.observe(window, 'load', function(){});
するかなぁ。
0240nobodyさん
2009/10/02(金) 03:07:29ID:???いまやってるDrupalが落ち着いたら手を出してみたい。
CMSはページ管理には便利だけど、ハマると結構てこずるや。
ZFWとどっちがMVCの分け方判りやすいかな
0242nobodyさん
2009/10/08(木) 15:15:39ID:2JJQdndq…というエラーが出ます。
getAllを用意した__DB_PEAR.phpもlibに入れてControllerからincludeしてるのに…。
Ethnaは最新バージョンです。
何故飛べないのか原因がさっぱりです。
0243242
2009/10/08(木) 18:57:42ID:2JJQdndq詳しくは分かりません。
0244nobodyさん
2009/10/19(月) 23:28:51ID:/Zspq1xO用意してありますでしょうか?
ご存知の方が居られましたらご教授よろしくお願いいたします。
0245nobodyさん
2009/10/20(火) 10:02:54ID:???つttp://ethna.jp/
Ethna > ドキュメント > 開発マニュアル > デモ > ページャを作成する
0246nobodyさん
2009/10/23(金) 18:04:21ID:7dG7Qup9というURLがあったとして、hogeとpekoが入れ替わることもあるとするとき、
1つ目の引数がhogeであるかpekoであるかを知る方法ってありますか?
$this->af->get(name[0])
とかで、hogeって入ってるとか。
今のところpathinfoあたりから自分で分解するしか思いつかないです・・・
0248nobodyさん
2009/10/26(月) 15:52:54ID:jayyJSrPやっぱそうなりますか。
ありがとうございますた
0249nobodyさん
2009/10/27(火) 21:30:22ID:???これを同じloginにするにはどうしたらよいでしょうか?エントリはindex.phpです。
0250nobodyさん
2009/10/28(水) 00:20:21ID:???hogehoge.tpl
<form action="login.php" method="post">
<input type=hidden value=1 name=action_login_do>
<input name=id>
<input name=pass>
<input type=submit>
</form>
login.php
<?php
include_once Hoge_Controller.php
Hoge_Controller::main('Hoge_Controller', array('login', 'login_*'), 'login');
0252nobodyさん
2009/11/10(火) 11:26:10ID:???***[508](ERR): Ethna_DB_PEAR._query(\class\DB\Ethna_DB_PEAR.php:306): Query Error SQL[〜〜]
みたいな感じで表示されるんだが、これを止める方法ってない?
一応、ロジックで
$res = $db->query($sql);
if (Ethna::isError($res)) {
return Ethna::raiseNotice('登録エラー',E_DATA_REGIST);
}
みたいな感じにはしてるんだけど・・・・。
0253nobodyさん
2009/11/25(水) 12:11:40ID:KpnnUhSVjoinとかサブクエリーとか、Postgresとか使える?
0254nobodyさん
2009/12/08(火) 08:35:32ID:YO3TGVaP使えるよ アダルトサイトでもEthnaの導入が増えてる
http://yourvideo.jp/?action_rank=true
0255nobodyさん
2010/01/28(木) 12:15:27ID:???進んでんな。
0256nobodyさん
2010/02/10(水) 11:31:46ID:SPzWL0O/の形でcheckedフラグ入れれる方法知りませんか?
最初からchecked=trueにしておきたいのですけど…。
型はチェックボックスでoptionに連想配列入れてるので<input...の形にはしたくないのです。
actionで$formに何か指定できるとか、{form_input...に何か付け足すとか
ご存知の方いらっしゃいましたらお願いします。
0257nobodyさん
2010/02/10(水) 11:41:00ID:???if (Ethna::isError($res))を何処に書いてるのか分からんが
Managerに書いてるんだったら処理全体をtryで囲って、
エラーの場合はcatchにthrowしてfalseを返す仕様にしたらどうだろう
呼び出し元の方で$this->ae->addObject();を使う
0258256
2010/02/10(水) 17:21:50ID:SPzWL0O/$this->af->set('hoge', "valueの値");
とすることによって、指定の箇所へチェックを入れれました。
0259nobodyさん
2010/03/25(木) 14:23:49ID:zMyaEA+v0260nobodyさん
2010/03/25(木) 21:12:33ID:???0261nobodyさん
2010/03/26(金) 02:36:56ID:???0262nobodyさん
2010/03/26(金) 21:22:48ID:???0263nobodyさん
2010/03/27(土) 18:56:17ID:???そこから教えて欲しい。
0264nobodyさん
2010/03/28(日) 02:07:00ID:???そのグリイもエスナ導入のために、メンテナを技術部長待遇で飼うほど維持コスト描けてる現実。年間1000万以上?
0265nobodyさん
2010/03/28(日) 10:49:14ID:???0266nobodyさん
2010/03/28(日) 17:13:55ID:???使ってもらって年収1000万円ももらえるのかよ。
羨ましすぎる。
0267nobodyさん
2010/03/28(日) 23:25:20ID:???aoとamが同じファイルでapp直下のディレクトリっていうのは駄目だけど
あともうちょい更新頻度が高ければ…
0268nobodyさん
2010/03/29(月) 16:16:58ID:???天才さん、運用時はどうしてるかおすえて><
0269nobodyさん
2010/03/31(水) 05:41:12ID:???0270nobodyさん
2010/03/31(水) 09:37:06ID:GZLqm0AVAddObjectを使って出来る?
0271nobodyさん
2010/05/24(月) 02:13:33ID:???2年前にケータイ案件で遭遇だけはしたけど、受注しなかったし、
GREEとかmixiとか出てくると臭くて使わないんだが・・・。
0272nobodyさん
2010/05/26(水) 12:01:18ID:HLwkDSbr0273nobodyさん
2010/05/28(金) 18:57:26ID:???0274nobodyさん
2010/05/30(日) 00:55:59ID:???なに使う?ZendFrameworkかCakePHP?
MapleはNetCommonsで見てダメだと思った。
0275nobodyさん
2010/05/30(日) 01:45:22ID:???小さいところはYiiなんで攻めても良い鴨。
Cakeは一通り慣れたけど、なんつーかAccessのPHP版て感じ。
言語仕様もあるけど、ビューのソースは荒れるし、
コントローラにグダグダ書くし、金になる(既存和製の)業務システムと
RoRの相性がイマイチな感触も受けてる。
余分な予算が取れない時代にRoR的に書き換える手間を
クライアントは甘受するのかな、出来たらおめでとうってとこか。
0276nobodyさん
2010/06/05(土) 06:30:37ID:???仕事選べよwww
greeは必死に人募集してるね。ethnaじゃやっぱり苦しいのか?
0277nobodyさん
2010/06/06(日) 14:04:38ID:???0278nobodyさん
2010/06/08(火) 22:06:07ID:???0279nobodyさん
2010/06/16(水) 15:05:12ID:???サンプルアプリってないでしょうか?
なんか自分はセンスないような気がして
参考にさせていただければありがたいです。
■ このスレッドは過去ログ倉庫に格納されています