07/01/21 15:51:48
>>771
無い袖は振れんのだ
しょうがない
一応、UrlHandler自体もうちょっとどうにかしようという流れはあるみたいだし
それに期待じゃないかね
俺は足りない部分はさくっと追加しちゃって後は本家の実装待ちみたいな感じだw
上記の変更も実質数行足すだけだったし
不満はあるけどEthnaは改造しやすくていいんだよねぇ(俺でも改造の道筋がすぐ見えるという意味)
773:nobodyさん
07/01/21 22:50:42
1つ前のアクション取得する簡単な方法ってないでしょうか。
validate()した後、エラーがある場合の
遷移先を自動的に指定したいのです。
フォーム値に渡す方法しか思いつきませんでした。
もっと簡単な方法があったらおながいします
774:nobodyさん
07/01/22 10:55:40 grOsWXoX
> 1つ前のアクション取得する簡単な方法ってないでしょうか。
セッション使うことにこだわらなければ、セッション使う。
ViewClass::forward()のオーバーライドでその決定後のactionを保存。
っつーか、>>773の1つ前というのが、1リクエスト前のactionという意味ならだけど。
そうではなく、PHP内の内部処理内でって言うなら、PHP5限定で現在のActionClass名
__CLASS__からActionNameを解析するしかないな。
解析はViewClassのメソッドに付け加えて、validate()でエラーが出た際はerror_viewとか適当な
クラスを作ってそこでジャンプ。
んー。Backendクラスもオーバーライドしないといかんかな。
775:nobodyさん
07/01/23 23:33:59 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
07/01/23 23:40:30
>>775
最初の一文字しか出てこないのは、多分PHPにおいて文字列も配列として
認識されるのが影響してると思う。
例えば、
$str = "abcde";
echo $str[0];
とすると、aって出る。
これを$strがマルチバイトの場合でバイト欠損になってるんだと思う。
777:775
07/01/23 23:50:58
>>776
そ、そうなの??
若干Ethnaから離れて大変申し訳ないですが。。
もしそうだとすると、配列を渡すようなsmarty_functionのselectとかcheckboxとか、
全滅ってことになるよねぇ??
778:nobodyさん
07/01/24 00:43:32
化けるのは、ただ単に文字コードの問題じゃなくて?
779:775
07/01/24 00:52:45
たぶん文字コードではないと思いますよ。
print_rで配列出すとブラウザ上に
Array ( [1] => さいしょ [2] => つぎ [3] => さいご )
って中身が出てるので。
780:778
07/01/24 00:59:51
select は smarty のプラグインかなんかでしょ?
そのプラグインの中で値がどうなってるか調べれば委員で内科医。
781:nobodyさん
07/01/24 01:10:21
>>775
使い方が違うだけだろ
$tests = array (
"1" => array ('name' => "さいしょ"),
"2" => array ('name' => "つぎ"),
"3" => array ('name' => "さいご"),
);
782:775
07/01/24 22:01:26
>>781
大変すまんかった。
おっしゃるとおり。
783:nobodyさん
07/01/24 23:56:26
ethna も sandboxほしいね。
784:nobodyさん
07/02/01 01:29:35
ほしゅ
785:nobodyさん
07/02/03 16:20:22 F0daih5C
Ethnaを勉強するのって公式サイトを見ての独学しかないんですか?
書籍を探しても見つからなかったのですが・・・
良い勉強法をご存知でしたらご教示ください(´・ω・`)
786:nobodyさん
07/02/03 16:44:49
>>785
ムック系の本の中で何度か取り扱われた事があるからそれを探してみると
とっかかりとしては良いかも
後は、Ethnaの公式とかgree lab見るとかコミッタの人のblogの記事を読むとか
多少内容は古いと思うけど独自にtips書いてる人もいる
ようするにぐぐれって事かw
後はEthnaはコードが読みやすいフレームワークだと思うから
実行順とかわからない所のコード追っかけてみたりした方がいろんな意味で
勉強になって良いと思う
787:nobodyさん
07/02/03 16:51:05
>>786
なるほど、分かりました。
手始めにソースコード読んで勉強してみます!
ありがとうございましたm(_ _)m
788:nobodyさん
07/02/04 10:32:16
外国産のPHPフレームワークばかりに目が向いていたが、Ethnaの使い方も勉強してみようかな
789:nobodyさん
07/02/05 12:06:34
EthnaのUrlHandlerって、アクションを一つ一つaction_mapに書いていかないといけないのでしょうか?
URLリンク(ethna.jp)
ここを読んだのですが、いまいちピンときません。
URLリンク(hoge)
URLリンク(hoge)
とあった場合に、
URLリンク(hoge)
URLリンク(hoge)
となるように、一つの設定ですませたいのですが、そういうことは可能でしょうか。
790:nobodyさん
07/02/05 18:50:46
URLリンク(www.endlessbattle.net)
おちっぱなしだけど...大丈夫なのかな...
791:nobodyさん
07/02/05 23:01:43
ethnaで作ったスクリプトをCGIとして動作させたい場合、
どうすればいいでしょうか?
ちなみに普通のPHPであれば、
#!/usr/bin/php
をつければ、CGIとして動作する共用レンタルサーバーです。
792:nobodyさん
07/02/05 23:12:49
AppObjectの使いどころが良くわからない・・・
クエリ発行するには
AppManager->db->query();
でいいんだよね?
AppObjectって必要なの?
793:nobodyさん
07/02/06 00:41:00
私は使ってません。
794:nobodyさん
07/02/06 15:35:18
/etc/[APPID]-ini.php
内で セッション値やアクションフォーム値を使用するためには
どうすればいいでしょうか?
$this->session->get('hoge')
でやってみましたが、Call to a member function on a non-object
が出ました。
795:nobodyさん
07/02/06 15:55:40
if( !empty( $this->af->get("hoge") ) ){
}
とするとエラーが出ます。
$hoge = $this->af->get("hoge");
if( !empty( $hoge ) ){
}
ならうまくいきます。へるぷみー
796:nobodyさん
07/02/06 18:02:29
セッションの値をsmarty内で{$session.id}みたいな感じで
使えませんかね?
setApp するのがだるいのです。
797:nobodyさん
07/02/06 19:35:30
>>795
PHP4だからじゃね?
>>796
[APP_ID]_ViewClass.phpの _setDefaultメソッドでアサインすれば?
798:nobodyさん
07/02/06 19:52:01
>>795
emptyで調べられるのは変数のみ
URLリンク(jp.php.net)
799:794
07/02/06 20:22:16
>>797
レスありがとうございます。
おっしゃるとおり PHP4です。
PHP5にせずに何とかする方法はないでしょうか。
あとみなさんPHP5でエスナってるんでしょうか?
800:721
07/02/06 23:30:31
>>794
>/etc/[APPID]-ini.php
>内で セッション値やアクションフォーム値を使用するためには
>どうすればいいでしょうか?
そんなやり方はしないヨ。
/etc/hogehoge-ini.php
には、設定値を書くから、設定値をセッションで上書きするって言う使い方はしない。
設定値はethna_configオブジェクト(のサブクラス)として存在してて、
そのロードはControllerのコンストラクタで行われてて、それってEthnaの起動のほぼ直後。
もちろん、Sessionが始まるより遥か前。
そもそも、セッションオブジェクトやアクションフォームオブジェクトは
AppManager/AppObject/ActionClass/ViewClass内のみで使われることを
想定としてるから、そんな変なところではアクセスできるわけがない。
801:nobodyさん
07/02/07 09:06:56
>>793
792です。
自前のクラスを使うことにしました、ありがとう。
いろいろ調べてみて、現状ではAppObjectを他のフルスタックフレームワークのModelと同じように考えてはいけないと思いました。
何でこんな中途半端なものがくっついてるんだろう?
混乱するだけなのにな・・・。
802:nobodyさん
07/02/07 17:46:41 hhcgJkB/
>何でこんな中途半端なものがくっついてるんだろう?
私はメチャメチャ使っています。
とにかく、ActionClassの行数を増やしたくないので、とりあえずAppManager/AppObjectにという感じで。
803:nobodyさん
07/02/10 12:18:29
.tplが勝手にキャッシュされて
htmlミスりまくりの自分としてはテスト中はかなり不便なんですが、
どこかでキャッシュの設定はできるんでしょうか?
smartyのキャッシュ設定はoffになってました。
本家でキャッシュで調べましたが、見つかりませんでした。
804:nobodyさん
07/02/11 11:49:01
アクションのフォワードってどうやるんですか?
805:nobodyさん
07/02/11 15:03:58
>>804
できません。
806:nobodyさん
07/02/11 23:05:45
>>804
やはりリダイレクトかアクションの継承になるんでしょうか。
807:nobodyさん
07/02/12 01:51:26
>>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さん
07/02/14 23:01:46 pcigeSJ1
行数のかさむコードには誰も反応しない。。w
809:nobodyさん
07/02/15 00:08:38
行数がかさまないように、括弧の前後にある改行を消せばいいの?
810:721
07/02/15 03:31:47
>>808
>行数のかさむコードには誰も反応しない
というか、何したいかいまいちよくわからん・・・・。
アクションのフォワードとかリダイレクトとかそれっぽい言葉があるが、
とりあえず言葉を使ってるだけ感がいっぱいで。
811:nobodyさん
07/02/16 17:19:24
プロジェクトディレクトリまでの絶対パスの取得方法教えてくださいまし。
APPID/lib 内のファイルを操作したいです。
812:nobodyさん
07/02/17 12:43:45
>>811
$_SERVER["SCRIPT_FILENAME"]からwww/index.phpを抜くのじゃ駄目か?
813:nobodyさん
07/02/17 13:00:20
普通に__FILE__使えばいいだけでは。
814:nobodyさん
07/02/19 17:44:59
ethnaでmod_rewriteが上手く使えない。
?や&で切れる。どうやればいいですか?
815:>>814 マルチ乙www
07/02/19 23:38:21
URLリンク(mixi.jp)
19: 普通 ( URLリンク(mixi.jp) )
つい先日から、ethnaを使い始めたものですが、mod_rewriteで上手く飛ばせないので、どうかご教授ください。
簡単なブックマーク的なものを作成しようとしてるのですが、URLを
entry?uri=URLリンク(hoehoge)<) [L] や
RewriteRule ^entry/(.+) /entry?url=URLリンク($1%{QUERY_STRING}) [L]
こんふうに書いたのですが、これがいけないのでしょうか?
?や&が含まれなければ、全てを取得できるのですが。。
はてブさんとかのエントリーと比較した場合、http://の://がはてブさんだとそのままだったのですが、自分のエントリーを見ると、http%3A%2F%2Fのようにエンコードされてしまいます。
これが原因なのでしょうか?
Smarty側のほうには、エスケープさせるsetAppNEがありますがこれは表示の問題で今回とは関係ないと思いますし。
もしかしたら、mod_rewriteの問題でここでの質問はおかしかったらすいません。すぐに削除します。
ただ、ethnaのエスケープ関連の問題でしたら、どうか解決法をご教授くださいませ。
よろしくお願いします。
816:nobodyさん
07/02/20 00:59:16
解決法。
もっと簡単なプログラムから勉強し直す。
817:nobodyさん
07/02/21 05:44:31
Smartyにcache_idを渡してページごとに複数のキャッシュを持たしたいんだけど、
できなさそうですね?
818:nobodyさん
07/02/22 14:22:50
>>817
ここはEthnaのスレ
よそで聞け
ちなみに余裕で出来るぞ
819:nobodyさん
07/02/22 15:16:44
Ethnaでって話しだろ?
820:nobodyさん
07/02/23 04:10:03
>>818
Ethnaでの話ですよ、もちろん。
>>819
その通りです
ちょいと改造して解決しました
821:nobodyさん
07/03/01 00:08:12
wamp環境でEthna使ってるんだけど、ethnaコマンドが黙り込むのはなぜ?
ethna add-action --basedir=dir sample
とかやるとき。
822:nobodyさん
07/03/01 16:07:38 ue5nOCQJ
AppObjectで
SQLの関数使いたいとき、
たとえば
update some_table set some_date = now() where some_id = 1;
↑こんなかんじのことをAppObjectでやりたいときって
どうやればいいんでしょう
ちなみにPostgreSQLです
823:nobodyさん
07/03/02 00:59:24
>>822
今のところ確かできなかったはず。
そのうち出来るようにしたいと言ってた気がする。
824:nobodyさん
07/03/02 01:00:04
そのうちじゃなくて将来的に出来るようにしたいと言ってたんだったかな。
どっちでもいいが。