【PHP】Ethna part.2【国産フレームワーク】at PHP
【PHP】Ethna part.2【国産フレームワーク】 - 暇つぶし2ch175:nobodyさん
08/05/18 13:33:05
>>174
どのへん?

176:nobodyさん
08/05/18 17:29:54
DBまわりがよくなればいいのにねえ

177:nobodyさん
08/05/18 22:38:14
CakePHPに乗り換えたけど、まだちょっと期待してるよ

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

179:nobodyさん
08/05/28 01:02:10
ちゃんと{APPID}_ActionFormを継承してるか?

180:178
08/05/30 10:07:06 mNLSpKje
>>179
どうもです。

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

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

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

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

181:nobodyさん
08/05/30 12:00:15
$form => array(
'required_error' => '{form}を入力してくださいね♪ '

182:nobodyさん
08/06/02 10:16:58
ethnaのサイトウィルスはってあったから注意
iframeのやつね
誰か連絡してやってくれ・・・

183:nobodyさん
08/06/02 16:14:36 aKm7Z/AW
ethnaのサイト落ちてますか?

184:nobodyさん
08/06/02 19:44:54
>>183
ethena.jpが乗っ取られてたらしい。
現在は閉鎖中。


185:nobodyさん
08/06/02 20:09:21
そして復活した模様

186:nobodyさん
08/06/02 22:36:44
URLリンク(ethna.jp)
リリース出たね

187:nobodyさん
08/06/03 04:54:20
さくらインターネットのルータがウイルスに感染してたってこと?
その方が怖いんだが

188:nobodyさん
08/06/03 05:15:50
さくらスレ見たらやっぱりさくらが問題みたいね
こえーな

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

190:nobodyさん
08/06/03 06:30:55
URLリンク(memo.st.ryukoku.ac.jp)

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

191:nobodyさん
08/06/03 09:34:43
そんなに簡単に乗っ取れるインターネットっていったい

192:nobodyさん
08/06/03 17:20:00 khCiq63d
簡単に言うけど、ssl化すればいいんじゃね?


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

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

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

193:nobodyさん
08/06/03 19:46:36
>>192
確か公式にアクションチェインの方法かいてあったはず


194:nobodyさん
08/06/03 20:13:41 khCiq63d
>>193
どうもです。
マニュアル見ててわかりました。

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


195:nobodyさん
08/06/04 03:06:30
>>192
そのままアップデートして問題ないよ。大きくは変わってないので。

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

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

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



197:nobodyさん
08/06/11 08:10:19
$this->session->start()じゃなくてsession_start()してんじゃないの?
auto_startとか。

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

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


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

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

start()
URLリンク(ethna.jp)
isStart()
URLリンク(ethna.jp)
isAnonymous()
URLリンク(ethna.jp)

199:nobodyさん
08/06/11 15:20:49
>>198
素直にMLに投げてみたら?

200:nobodyさん
08/06/11 20:46:44
>>198
だから「同時に使い分けることはできない」んだってば。
これが仕様なのかバグなのかは知らないけど。


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


202:nobodyさん
08/06/11 21:59:31
start前はbool(false)、
start後はbool(true)になるけど?


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



204:JK
08/06/11 23:40:12 xujtuY+c
>>203
なるほど、そういう説明なら納得。

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

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

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


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

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

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

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

208:JK
08/06/15 17:30:32 vmTqGR6A
なるほど、ありがとうございます。

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

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

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

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

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

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

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


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

210:nobodyさん
08/06/25 07:08:45
>>209
>>170

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

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


212:nobodyさん
08/07/01 11:34:32
このスレにレスが付くのは不思議だよな・・・。 

213:nobodyさん
08/07/03 08:29:19 cyN9Rfkc
>>212
おまいの自作自演だったりして、このレスもw

214:nobodyさん
08/07/28 10:13:22 YSIM2iDa
過疎化しているようなので、レスがつくか不安ですが質問です。

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

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

215:214
08/07/28 10:25:20 YSIM2iDa
間違えた

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

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

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

216:nobodyさん
08/07/28 14:37:54
質疑は社内ですればいいのに・・・。

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

218:nobodyさん
08/10/01 11:11:33
Ethnaのサイトに繋がりません。

219:nobodyさん
08/10/01 22:42:24
ethnaみたいなゴミフレームワークよく使えるな

220:nobodyさん
08/10/14 23:49:51
え?砂フレームワークだよ

221:nobodyさん
08/10/18 13:20:02
>>219
なにつかってる?
最近乗り換えけんとうちう

222:nobodyさん
08/12/15 15:11:08
RSSパーサーってみなさんはpear使ってますか?

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


224:nobodyさん
09/03/01 19:57:05 Hv9B/Cgp
URLリンク(labs.gree.jp)

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

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

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

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

環境:
Ethna 2.5.0-preview3

225:224
09/03/01 22:40:13
すみません、こちらのミスでした。

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

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

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

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

227:nobodyさん
09/07/30 12:48:49 XFFHqckQ
あげ!
・・・って前の書き込み5ヶ月前かよ・・・。

228:nobodyさん
09/07/30 22:16:06
>>226
決まったActionしかしないってことにさせればいい。

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

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



229:nobodyさん
09/07/31 09:14:02
Webサーバの方でリダイレクト設定するとかでもいいんでない?

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

230:nobodyさん
09/07/31 09:29:00
>>228
どうもです。
やってみます~

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

232:nobodyさん
09/08/26 16:38:32 UZkILcW9
誰か見てますか…此処。
質問とかしていいのかな?

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

やってみた事↓

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

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

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

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

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

234:232
09/09/03 14:48:01 42dHYBvA
ありがと。
別のややこしい方法で取ったよ。

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

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

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

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

236:235
09/09/29 11:11:57 0+eTXppc
すみません。ラジオボタンの問題は自己解決しました。

237:235
09/09/29 11:12:36 0+eTXppc
すみません。ラジオボタンの問題は自己解決しました。

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

239:nobodyさん
09/09/29 23:19:45
>>235
うーん、ActionFormからHTMLにdisabledを入れるのって
今時のやり方じゃない感じがする。

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

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

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


240:nobodyさん
09/10/02 03:07:29
これ面白そうだな。

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

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

241:nobodyさん
09/10/06 02:01:12
>>240
Zend

242:nobodyさん
09/10/08 15:15:39 2JJQdndq
Fatal error: Call to a member function getAll() on a non-object in

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

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

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

243:242
09/10/08 18:57:42 2JJQdndq
MySQLの設定で何か問題があったようです。
詳しくは分かりません。

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



245:nobodyさん
09/10/20 10:02:54

URLリンク(ethna.jp)
Ethna > ドキュメント > 開発マニュアル > デモ > ページャを作成する

246:nobodyさん
09/10/23 18:04:21 7dG7Qup9
URLリンク(hoge.com)

というURLがあったとして、hogeとpekoが入れ替わることもあるとするとき、
1つ目の引数がhogeであるかpekoであるかを知る方法ってありますか?
$this->af->get(name[0])
とかで、hogeって入ってるとか。
今のところpathinfoあたりから自分で分解するしか思いつかないです・・・


247:nobodyさん
09/10/23 22:38:55
>>246
$_SERVER['QUERY_STRING']からとるしかねーじゃん。

248:nobodyさん
09/10/26 15:52:54 jayyJSrP
>247
やっぱそうなりますか。
ありがとうございますた

249:nobodyさん
09/10/27 21:30:22
アクションloginのフォーム表示画面でsubmitするとURLがindex.phpになってしまうんですけど
これを同じloginにするにはどうしたらよいでしょうか?エントリはindex.phpです。

250:nobodyさん
09/10/28 00:20:21
>>249
hogehoge.tpl
<form action="login.php" method="post">
<input type=hidden value=1 name=action_login_do>
<input name=id>
<input name=pass>
<input type=submit>
</form>



login.php
<?php
include_once Hoge_Controller.php
Hoge_Controller::main('Hoge_Controller', array('login', 'login_*'), 'login');

251:nobodyさん
09/11/04 10:10:05
>>250
ありがとう


252:nobodyさん
09/11/10 11:26:10
クエリエラーが発生したとき、画面上に
***[508](ERR): Ethna_DB_PEAR._query(\class\DB\Ethna_DB_PEAR.php:306): Query Error SQL[~~]
みたいな感じで表示されるんだが、これを止める方法ってない?

一応、ロジックで
$res = $db->query($sql);
if (Ethna::isError($res)) {
return Ethna::raiseNotice('登録エラー',E_DATA_REGIST);
}
みたいな感じにはしてるんだけど・・・・。

253:nobodyさん
09/11/25 12:11:40 KpnnUhSV
EthnaってもうちゃんとO/Rマッピング対応してんの?
joinとかサブクエリーとか、Postgresとか使える?

254:nobodyさん
09/12/08 08:35:32 YO3TGVaP
>>253
使えるよ アダルトサイトでもEthnaの導入が増えてる
URLリンク(yourvideo.jp)

255:nobodyさん
10/01/28 12:15:27
アダルトサイトなんてXOOPSか下手するとブログ程度かと思ってたのに。
進んでんな。

256:nobodyさん
10/02/10 11:31:46 SPzWL0O/
{form_input name="hoge"}
の形でcheckedフラグ入れれる方法知りませんか?
最初からchecked=trueにしておきたいのですけど…。
型はチェックボックスでoptionに連想配列入れてるので<input...の形にはしたくないのです。

actionで$formに何か指定できるとか、{form_input...に何か付け足すとか
ご存知の方いらっしゃいましたらお願いします。

257:nobodyさん
10/02/10 11:41:00
>>252
if (Ethna::isError($res))を何処に書いてるのか分からんが
Managerに書いてるんだったら処理全体をtryで囲って、
エラーの場合はcatchにthrowしてfalseを返す仕様にしたらどうだろう
呼び出し元の方で$this->ae->addObject();を使う

258:256
10/02/10 17:21:50 SPzWL0O/
自己解決しました。

$this->af->set('hoge', "valueの値");
とすることによって、指定の箇所へチェックを入れれました。


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch