ログインしてさらにmixiを楽しもう

コメントを投稿して情報交換!
更新通知を受け取って、最新情報をゲット!

Ethnaコミュのどこでつまづいた?どこが難しい?

  • mixiチェック
  • このエントリーをはてなブックマークに追加
このコミュニティの人は
もうみんな修得しおわって無意識に使える人ばかりかもしれませんが
Ethnaを覚える課程でどのあたりでつまづいたり、苦労したか
教えてほしいです。
例えば、私の場合はMojaviをやっていたのでethna.jpのチュートリアル3つで十分理解できましたが
(それでもActionFormの便利さははっきりとわからなかった記憶がある)
あのチュートリアルはちょっと敷居が高いのかもしれないと思っています。
私も脇役ではありますが、CVSにコミットできる権限とか持っているのでソース的な部分までサポートできます。
覚える課程で苦労した事や今苦労している事をざっくばらんに書きこんでください。

コメント(14)

> 覚える課程で苦労した事
初めてのMVCだったので、それを理解する事だったかな。
更にActionFormも加わってきて、もう何が何だか!でした。

> 今苦労している事
Ethna_AppObjectでテーブルジョインを華麗にできない・・・・。他のORマッパ使えばいいのかな。。。
やっぱりドキュメント不足に相当戸惑ってます。
ただ、なんとなく使用できてしまう“しやすさ”が非常に気に入ってます。
ActionFormはぜひ詳細展開してほしいですねぇ。。
私はXOOPSでなんちゃってオブジェクトを垣間見て、Ethnaで「おぉ」と感動した素人もんなんですが・・。

Ethna_AppObjectのimportForm/exportFormメソッド、単純なんですがフォームとオブジェクトの連携が感覚的に扱えるので、すげー良いです。

Locationを使うっていうのは、ブラウザバックとか二重クリック対策でしょうか。QuickForm_ControllerとかPhrameで使っていますね。Viewクラスでなら使うかも。

といいつつ、Viewクラスはあまり使ったことないです。
なんか、Actionクラスだけで片付けてしまう。。


>> 今はEthnaを使っている人が少ないので最適な流儀が見つからない。
greeの人が居れば、一番良いんでしょうけどね。(笑)
こんなことを聞くのも恥ずかしいのですが

$db = $this->backend->getdb();

1.EthnaのDBを使っている
$rep = $db->query($sql);
if (Ethna::isError($rep) {
〜〜〜
}

2.PEARのDBを使っている
$rep = $db->db->execute($stm, $val)
if (DB::isError($rep)) {
〜〜
}

と、これでよいのでしょうか?それとも両方ともEthna::isErrorで処理が出来るのでしょうか?

Q&Aのネタになるとでも思って回答をいただけると。
(本当はソースを読むべきなのだろうけど)

1.の場合でもDB::isErrorでもエラーにはならない(が、エラーを見つけられない)ので、自由度が高いPHPってBASICみたいなまずい部分もあるのかなと考えてしまいました。
1.2.ともその処理で問題ないと思います。
executeってありましたっけ?db->db->queryなような・・
いま、ユーザーの二重登録防止の部分を
Ethnaのオフィシャルサイトにあるサンプルを元にして
作っているのですが、
二重登録をチェックする部分はサンプルでは
function isDuplicate($key, $value, $user_id = null)
{
 $tmp =& new Sample_User($this->backend, $key, $value);
 if ($tmp->isValid() && ($user_id == null || $tmp->getId() != $user_id)) {
  return true;
 }
 return false;
}
のようになっていますが、
$user_idは不要かと思い、
function isDuplicate($key, $value)
{
 $tmp =& new Sample_User($this->backend, $key, $value);
 if($tmp->isValid())
 {
  return true;
 }
 return false;
}
のようにしてみました。
しかし、二重登録が検出されたときに、
isDuplicateを呼び出した直後の
$this->ae->add(
 'mailaddress',
 '入力された{form}は既に登録されています',
 E_APP_DUPENT
);
の部分で後者のコードだとphp-cgi.exeが落ちてしまいます。
isDuplicateを呼び出す部分では$user_id=nullになっているので
($user_id == null || $tmp->getId() != $user_id)
この部分は不要ではないかと思っていたのですが、
この部分は何か重要な働きをしているのでしょうか。
PDOまわりだと落ちたりしそうですね。(いまは関係ないと思うけど)

> isDuplicateを呼び出した直後の
ってのを、どうやって調べたのかも教えてください。
えーと、最終レスからしばらく経っていますが、あえて書き込み。

今苦しんでいる真っ最中です。tutorialは一応やりましたが、正直言って
WEBサイトの丸写し。どのクラスがどう協調して動いているのか全然わか
りません。さらに「'action' => なんとかクラス」の省略とかやってるともうわ
けわからんです。ほかの言語みたいに value = new ClassName() とかやってる
ところがないからわかりにくいのかもしれない…。

あと、クラス内で出てくる特殊な意味を持った変数(array('action'とか))
もよくわからないです。クラスのマニュアルはあってもクラス変数(ん、
インスタンス変数になるのかな?)のマニュアルがないのも痛いです。
よくスケルトンコードで「遷移名」って出てきますけど、これ、どういう
意味ですか?

もひとつ。こちらは会社の先輩に言われただけでやっぱりよくわかってない
のですが、「フィルターを通す」って、具体的に何をするんですか?サニタイズ
はActiveFormクラスでやりますよね(違うかな?)?

とにかく全体的な遷移と遷移の中で使われる変数がよくわかりません。教えて
いただけると助かります。

ログインすると、みんなのコメントがもっと見れるよ

mixiユーザー
ログインしてコメントしよう!

Ethna 更新情報

Ethnaのメンバーはこんなコミュニティにも参加しています

星印の数は、共通して参加しているメンバーが多いほど増えます。

人気コミュニティランキング