【php】fuelphpについて語ろうぜ
fuelphpってどうよ?
たてる場所間違えたので、こっち使ってね☆ こういうふうに全てのアクションで同じ値を使いたいのですが、アクションを増やすごとに
毎回同じ事を書くの面倒です
このへんはどう改善して書けばよいですか?
class Controller_Welcome extends Controller
{
public function action_index()
{
$data['title'] = "サイトのタイトル";
return Response::forge(View::forge('welcome/index'));
}
public function action_sitemap()
{
$data['title'] = "サイトのタイトル";
return Response::forge(View::forge('welcome/sitemap'));
}
public function action_page()
{
$data['title'] = "サイトのタイトル";
return Response::forge(View::forge('welcome/page'));
}
} クリスマスなんたらでコミュを囲った奴らが実は動かないから
逆に障害になってるよな。言いっぱなしつーか。いいFWなのにな。 結局、どの辺にバグが多くて、何系の業務アプリに向いてないんだ? 5.3以上対応ってとこじゃないの?結局は。
それが長所でもあるんだけど。 PHPフレームワークって何回分裂したら気が済むの?
>>24
Controller_Welcomeクラスにbeforeメソッドを定義しては? beforeとかいう以前にモデルを作らないからそうなると思うけどね >>29
フレームワークってのはそんなもんだ。
コア部分の違いを吸収しようとするとコードがフクザツに大きくなるし。 無職の俺が名乗り出て有志を募っても良いんだけどさ
無職が気に食わない奴とか出てきて対立しそうだからやめとくわ ユーザー会の運営って、手間はかかるけど勉強にはなるし、そこから仕事が発生したりもするから、勉強中の無職なんて運営者に最適だと思うな。 やるならDrupalみたいに複数人で意見言い合えるコミュニティーにしてくれ 活気付くなら良いじゃない。
嫌になったら辞めたら良いし。 だめだ。俺の頭じゃ解決できん。
このSQLをどうやったらQueryBuilder形式にできるんだ? Model_Crudでもいいから教えてエロい人!!
「SELECT * FROM tbl_search WHERE account = ? AND position = (SELECT MIN(position) FROM tbl_search WHERE account = ?);」
なんというか、1件だけ取れればいいんだから
頭を柔らかくすればいいと思う 興味あるけど日本語情報が少ないのがなぁ
codeigniterくらい初心者に優しかったら使いたい 更新も活発じゃないし趣味でしか通用しないフレームワーク そう思えたなら、趣味に使ってればいいのだが、その書き込みはどんな反応が欲しいのか不明だ。 いろんなブログで取り上げられてるの見ると
かなり盛り上がってそうな印象なのにこのスレはお通夜 中途半端なライセンス解釈でciを見捨てた元ci信者しか騒いでないから
実質的に騒いでるのは一部だけ
しかも乗り換えを決めたほとんどの人は安定性と機能と速度でyiiに乗り換えてるから
こっちはほとんど人いない
ciに慣れ親しんだ人はfuelに移行する事を考える前に
もう一回ciのライセンスについて検討し直す事をお勧めする
ユーザ会のMLをライセンス問題が勃発した10月辺りから全部見直した方がいいと思う
なんでこういう事態になってしまっているのか見えてくるかもしれない
http://sourceforge.jp/projects/codeigniter/lists/archive/users/ まさにyiiに乗り換えたんだけど、めちゃくちゃ快適だよ
今では一番気に入ってるわ
なにやらめんどくさそうなci使うよりよっぽどいいと思う でも、盛り上がりは穏やかだけど、いいフレームワークだと思うよ。 >>46
そうかな
懇談会に参加してもあんまりFuelの話は出ないか 公式のフォーラムでも出てたけど、Webで起動するのと、Taskで起動するのとでDOCROOTの値が違うのは問題だよなぁ。 FuelPHPを無理やりはやらそうとしてる人たちが気に食わない CI Kohana Fuelのどれかをやろうと思ってます
CIは古いがゆえに起きる問題(プロジェクト分裂とか後方互換気にしすぎとか)が気になるかなって感じで
Kohanaは日本語ドキュメントが少なすぎて
Fuelが一番バランスがいいなって思ったのでFuelにしようと思うのですが
CIで使えるものは全部Fuelでも使えると思っていいでしょうか? ここにクラスを入れておけば自動的にincludeされるディレクトリとかない?
app/classes/controller.php を作成し、
__construct()にてapp/classes/class/ディレクトリの中の*.phpをrequire_once()する
app/classes/class/ディレクトリの中のクラスに、
class test {
public function test1(){
test::test2();
}
public funciton test2(){
echo "ABC";
}
}
app/classes/controller/default.phpのデフォルトコントローラ内に
test::test1(); と記述したところ
ErrorException [ Error ]: Call to undefined method test::test1()
とエラーメッセージが表示されてしまいます。
class_exists('test') だとtrueが返るのですがなぜでしょうか。 エラーメッセージ読めよ
classがundefinedとは書いてないだろ はい、classは存在するのに、
publicであるtest1がtest::test1()で実行できないのはなぜでしょうか
クラス単体で動作させた場合は実行できました typoでfuncitonになってるからじゃね
ふぁんじしょん
IDE使おうぜ
あと単体テストはしっかり メールアドレスとパスワードでログインして、
ユーザー名の代わりにニックネームを使いたいんですが、
Authドライバ自作しないと無理でしょうか? 全然ユーザー集まらないじゃねぇか
これじゃあ"増えないPHP"だな 糞
ただの劣化したcodeigniterでしかない
さも流行ってるかのように煽ってる奴なんなの? 煽ってる人は本を売りたい人達。
でも、静かにちゃんと使ってる人は解ってるけど、なかなかいいFWよ。 fuelは軽量かつ最新のPHPに最適化されていて中々いいけど
正直CIでも何の問題も無いよな。
いずれにせよ、yii最高、cakeまじ糞とかやたら熱く語りたがる
フレームワークヲタは大したスキルもないしキモい。 入力フォーム→確認画面→完了
みたいにしたいんですけど
仮に入力フォームがaction_post()で
確認画面がaction_confirm()だったとして
フォームで入力したデータをaction_confirm()にポストして
バリデーションで失敗したとき、action_post()で使用したviewを読み込んで
exit;するのはおかしいでしょうか?
public function action_confirm()
{
// (省略)
if ($validation->run())
{
// (省略)
}
else
{
$this->template->content = View::forge('articles/form');
exit;
}
// 以下省略
} すみません検証もせずに聞いてしまいました。
正しくはexit;ではなく return $this->template;でした。
もっとスマートなやり方があれば教えて頂きたいです。 echoじゃ出力できなくなってんじゃん!
return ブログとか見てるとfuelphp人気ありそうなのに
このスレは過疎ってる不思議 Controllerのユニットテストができなくて泣いた。次のメジャーバージョンからできるようになるんだっけ おお、こりゃ良さそうだ
ttp://tech.caph.jp/2012/02/04/fuelphp-admin-view/ セクシーなコードってどういうコードですか?
想像が付きません ZendFrameworkは難しくて学習段階で挫折しました。
50時間くらい学習したと思いますが私には難しすぎました。
PHPやOOPは、分かります。
FuelPHPはZendFrameworkより初心者の敷居が低いでしょうか? まぁCIと一緒だね。他のFWに挫折した人達でも使える。
その代わりできる事はあんまりない。 ZFより簡単なんですね。
チャレンジしてみます!
ありがとうございました! すみません、下記コードでDBから値を引っ張っています。
$data['mains'] = DB::select()
->from('mains')
->join('kotsus', 'left')->on('mains.sick_cd', '=', 'kotsus.sick_cd')
->where('mains.sick_cd', 'in', $sick_cds)
->execute();
mains,kotsusともにsick_cdがある場合は良いのですが、
kotsusにない場合に、mainsのsick_cdフィールドがnullになってしまいます。
(kotsusに無いためnullを取得し、mainsの値を上書きしている)
kotsusテーブルの持つ値でソートしているため、
Modelを使って各々にクエリを投げるような真似をしたくないのですが、
nullで上書きされないようにする方法は何かあるでしょうか? >>88
Inner joinにするか、
->where('sick_cd', 'IS NOT', null)
追加でいいんじゃない? FuelPHPを下のURLで勉強してみました。
10分でわかるFuelPHP
http://www.slideshare.net/kenjis/10fuelphp-osc2012-nagoya
FuelPHP簡単!これなら習得できそう!です。
この次に学習するオススメのサイトや資料がありましたら、
是非教えてください。 正直な話、PHPを解っているのなら、公式サイトのリファレンスを隅から隅まで読むのが、
一番理解できるし、やりたい事をカタチにする方法が見えてくるよ。 >>89
ありがとうございます。
nullになるものもまとめて欲しかったのですが、
inner joinでsick_cdが何れもあるものと、
残りはjoinせずにクエリを投げて取得することで回避できました。
これFuel関係無かったかなーと思いましたが、
left joinが全く意味がなくなってしまいますので問題ですよね。
id
mains
mainsとkotsusともにidカラムがあるので
kotsusにsick_cdが見つからないない場合はidもnullで上書きされてしまいましたので。 うが…書いてる最中に…
mains
id sick_cd name
1 s0001 あああ
2 s0002 いいい
3 s0003 ううう
…以下略
kotsus
id sick_cd order
1 s0002 1
2 s0004 2
こんな感じでありまして、
>>88のleft joinでwhere sick_cd in (s0001〜s0004)とすると、
[[id=>2, sick_cd=>s0002, name=>いいい,order=>1],
[id=>4, sick_cd=>s0004, name=>えええ,order=>2],
[id=>null, sick_cd=>null, name=>あああ,order=>null],
[id=>null, sick_cd=>null, name=>ううう,order=>null]]
となります。
inner joinですと下記になります。
[[id=>2, sick_cd=>s0002, name=>いいい,order=>1],
[id=>4, sick_cd=>s0004, name=>えええ,order=>2]]
で、期待しているのは…
[[id=>2, sick_cd=>s0002, name=>いいい,order=>1],
[id=>4, sick_cd=>s0004, name=>えええ,order=>2],
[id=>1, sick_cd=>s0001, name=>あああ,order=>null],
[id=>3, sick_cd=>s0003, name=>ううう,order=>null]]
sql1回で期待する値が取れればそうしたいのですが。 >>93
あーそういうことか。質問理解してなかったすまん
IFNULL(mains.sick_cd, kotsus.sick_cd) でいけると思うけど、query builderで関数って使えるんだっけ?
SQL文は自分で書いて
DB::query($query)->execute()->as_array();
するしかないかも >>91
残念ながら、公式サイトのリファレンスを隅から隅まで読む力量が
なさそうです。
理解が追いつかないデス。。。
チュートリアルか、Tips形式で少しずつ理解を深めたいです。
10分でわかるFuelPHP の次のステップとなる良い教科書を
知っている方、教えてください。 >>95
去年のadventが無料で配られてる。
https://gihyo.jp/dp/sp/advent2011/G11C13
今年もadventやるらしいから、クリスマスまで覗いてみるといいよ。 >>95
codeigniter使えばいいじゃない
日本語マニュアル完備だよ >>94
>query builderで関数って使えるんだっけ?
つDB::expr() 今更ですが・・。
$data['mains'] = DB::select('mains.id', 'mains.sick_cd', 'mains.name', 'kotsus.order')
…以下略。
全部欲しい方を記述することで回避できました。 公式マニュアル読みながら学習用にWebアプリを1本作ってみたけど、
やっぱ、公式マニュアルだけじゃわからないこと多し。
公式マニュアルを精読すればFuelPHPでアプリが作れるというのは
無理、と感じた。
公式マニュアルはクラスのリファレンス本として機能するけど、
FuelPHP初心者が全体を大まかに理解する目的で読むものではない
とわかりました。 たとえば、こんなこと公式マニュアルでわかるのかな。
・Configクラスの説明みても、どのフォルダに何ていうファイル名で
Configの設定を記述したら良いか。
・config.phpが複数あった場合、どんな順番でオーバーロードされて
読み込まれるのか。
・ビューにSmartyを使いたい場合、その設定方法。
これらは公式マニュアル見ても見つからず、Webで調べて解決しました。 なんでもかじりたがる俺から忠告。
趣味でやるならいいけど、時間を無駄にしたくないならやめとけ。 >>104
なんでもかじりたがるおまいさんが
おすすめのフレームワーク教えてくれよ FuelPHPは、複合主キーをサポートしてますか? FuelPHPを習得した人がCIをやると、何か新しいスキルが身に付きますか?
(CIを使えるようになるという他にスキルの蓄積はできるか、という意味) kohana v2 から乗り換え先を探してたんだが
FuelPHPにしようかな。 FuelPHPにしてみて。
上に書いてある通り、公式マニュアルはちょっと不親切な感じではあります。
でも、読みやすいソースコードを書けるよ。
おすすめ。 forge って何?
あちこちで出てくるんだけど、どういう意味で使ってるんだろ、この単語。 forge=鉄などを鍛えて造る。
fuel(燃料)と親戚関係の単語なんじゃないの? 一つのWebサイトで、日本語ページ、英語ページ、スペイン語ページ…という具合に、多言語対応サイトを作る場合、FuelPHPでは、どうやればスマートですかね?
ユーザーエージェント、IPアドレスで国、言語を判定。ユーザーに言語を選択させて、セッション情報に言語情報を置いておく。
Viewテンプレートの文言は、FuelPHPの言語別のメッセージ切り替え機能で、入れ替える。とかでしょうか? 誰も答えないみたいだし
だいたいそれで良いんじゃね
HTTPのリクエストヘッダも忘れずに viewのなかで<?php echo \VIew::forge('hoge/fuga'); ?>みたいに書くのはよくないんでしょうか? そういう時はrender関数使うことが想定されてんじゃね?もしくはレイアウト機能 なるほど。render()使うようにします。ありがとうございますー csrfの検証をpostの場合は自動で行いたいって場合だけど、Form::openを拡張しつつ、public function before()に検証ルーチン書き足した自作コントローラクラスを継承して対応ってのが妥当かな?
皆どうしてる? >>123
そうそう。俺はCIから移行した口なんだけどさ、CIはそこが自動でさ、fuelはチェック手動だからどーしたもんかな、と