[PHP][フレームワーク]CodeIgniterスレ
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2007/04/27(金) 23:17:16ID:???チュートリアル:http://codeigniter.com/tutorials/
ユーザガイド日本語訳:http://ci-user-guide-ja.nought-point-999.net/
小回りの利くフレームワークの話題をひとつ!
0490488
2008/12/29(月) 12:21:19ID:L94/Z1Ymはい、そのとーりですw
100点!
0491nobodyさん
2008/12/29(月) 15:23:16ID:???0492nobodyさん
2008/12/29(月) 20:26:52ID:???そのあと英語のドキュメントを読んでも理解しやすいよね?
CodeIgniterと英語の勉強になれば一石二鳥だ!
0493みなさん来年も良いお年を!
2008/12/29(月) 20:31:46ID:???おかげでCodeIgniterの学習コストが少しで済んだ。
本も買って、何度も読み返している。
WEBアプリを作るのが楽しいと思える今日この頃。
今もプログラミングしてるし。^^
CodeIgniter日本語版のおかげで、デスマの日々を過ごしたトラウマから立ち直れそうです。(・∀・)
0494nobodyさん
2009/01/15(木) 21:00:02ID:???願わくば 1.7 の差分を公開を!
今は、Form ValidationやDBのセッション使うみたいだしね
0495nobodyさん
2009/01/15(木) 21:02:33ID:???Validation後の値をとるときってどうすればいいんですかね?
DX_authとか見てるとプログラム中で(controller/auth.phpとかで)
set_value() 使っているんだけど、メソッド名的になんか変なんですが、こんなもんでしょうか?
フォーラムとか見ると、
$this->input->post('mage');
使えってあったけど、これって直接入れた値なんじゃないのかな?不安なんですが・・
0496nobodyさん
2009/01/15(木) 22:08:30ID:???0497nobodyさん
2009/01/15(木) 22:25:21ID:???たぶん、サニタイズ?とごっちゃになってるんだろうなー
というか、入力データをとりあえず変換するっていう発想はなかなかなくならないのな。
実際、入力値を変換するっていう処理が本当に必要なのは文字コードの変換くらいだろうと
思うんだが・・・
どうも質問で想定されてるのが、例えば数字・記号の全角半角変換や検索キーワードの
平仮名←→カタカナ変換等の親切処理とか、メール送信等を考えての半角カナ・機種依存
文字や絵文字などを置換・削除する処理などではない雰囲気なのが、なんだかなあ
0498nobodyさん
2009/01/15(木) 22:45:47ID:???form_validation->run実行してtrueだったらvalidationを通った値ということなので、そのまま$this->input->post使えばいいと思うよ。
それでも心配なら自分でコード書いてテストすればよろし。
という話だと解釈したんだが間違ってたらすまん。
0499495
2009/01/18(日) 15:11:26ID:???Validateつまり検証するだけだから、検証にパス(runでTRUEが返る)したら、
その時点でOKだから、input->post使えばいいのか。
修正とか変換するわけではないのね・・・。
set_value() はviewのformに前の入力値をデフォルト表示するためのものだから、
そう使うべきのもの。
0502nobodyさん
2009/01/20(火) 14:45:10ID:???updateメソッドを、事前のwhereなしで呼ぶとテーブル内のデータを全部更新してしまって、
アボンしますよね?
これ、よくやらかしてしまうのですが、よい回避方法ないでしょうか?
マニュアル見ると、
$this->db->update('mytable', $data, "id = 4");
みたいに、引数でwhereを追加するように決めてしまえばいいのですが、
うっかり引数を省略すると、アボンしてしまいます。
引数省略しないようないい方法ないですかね?
0503nobodyさん
2009/01/20(火) 18:20:44ID:???0504nobodyさん
2009/01/20(火) 19:23:54ID:???ActiveRecordの使い方としてそれはどうなんだ
find()で取ってきたものをupdate()なら、そうはならんのでは?
と、CIを使ったことのない俺が書いてみる
0505502
2009/01/21(水) 10:29:58ID:???私の場合、すでにあったら上書き、なかったらinsertという風な処理を書いていたのですが、
たまに、insert()をupdate()に置き換えただけで実行してしまい、テーブルごとアボンしてしまうのです。
まあ、アフォといえばアフォなのですがw
普通は >>504の意図するように、get_where()->result(); なりしてupdateしたいidを得て、
そのidをupdateにつっこむもんですよね・・・。
0506nobodyさん
2009/01/21(水) 23:55:24ID:???リファレンス見たけど、SQLが透けて見えそうな薄い実装だね。だから速いんだろうけど。
>>502
常にwhere()呼んだら駄目か?insert()なら無視してくれない?
すごく間抜けに見えるだろうけど。
あるいは、ラッパーかぶせてidを指定しないupdate()を隠すとか。
もしくは配列からidをとって勝手にwhereに入れるupdate()ラッパーを書くとか。
0507nobodyさん
2009/02/02(月) 17:00:10ID:???http://lists.sourceforge.jp/mailman/archives/codeigniter-users/2009-February/001699.html
俺も手伝いたいんだが、こういのっていきなり着手しちゃっていいもんなのかな?
皆さんの訳がとても上手いので、なんか気が引けてしまう。
0508nobodyさん
2009/02/03(火) 00:20:37ID:U0x1Z73i0510nobodyさん
2009/02/11(水) 12:25:10ID:???0511nobodyさん
2009/02/11(水) 13:34:24ID:632VXucI最後ログアウト時に
$this->session->sess_destroy();
でセッションを破棄してるんですが
ブラウザの戻るボタンを押すと
破棄する前のページが表示されてしまいます。
読み込み直すと会員ページは表示されずキチンと動作します。
戻るボタンを押しても会員ページが表示されないようにするには
どうしたらいいですか?
すいませんがアドバイスよろしくお願いします。
0513nobodyさん
2009/02/11(水) 14:15:46ID:???アドバイスありがとうございます。
デフォというのは
$this->output->set_header();で設定するという事ですかね。
今からマニュアル見てやってみます!
0514nobodyさん
2009/02/12(木) 20:18:30ID:RECSJFEg関数 (function)を定義した中だと、viewに渡した変数が使えません orz
例えば、
controller側:
$this->data["hage"] = "mage";
$this->header = $this->load->view('hoge_view', $this->data, TRUE);
view側:
function show_mage($title)
{
echo "<h1>$title<h1>";
echo $mage; // エラー:Undefined variaぶる
}
show_mage("mage 1");
show_mage("mage 2");
show_mage("mage special");
view内ではfunctionは使わないものなのでしょうか?
HTMLが絡む表示部分はなるべくcontroller じゃなくて、view側に入れたいので、
view側で処理したいものなのですが・・・
0515nobodyさん
2009/02/12(木) 21:08:20ID:???CIだとかフレームワークだとか言う以前の問題として、少なくともPHPの基本を覚えるべきかと。
○ show_mage 内の $mage ってどこから出てきたのでしょうか。
○ ↑が $hage のタイポとして、関数内から外部の変数をそのまま参照することはできません。
CIのviewをデフォルトで使ったことが無いので確実ではないですが、show_mage関数内で
global $hage;
とかやってみてはどうでしょうか。
あと、viewファイル内で関数を定義するというのも、それがview関連処理だったとしても、
コーディングとしてどうかと思います。まあこれは異論もあるかもですが。
view ヘルパーや部分テンプレートとして切り出すことも可能な場合も多いかと。
0516514
2009/02/12(木) 23:38:27ID:???ごめん。最小限のコードに直して書こうとしてtypoした。
$mageでなく、$hageです。
globalではダメでした。
view内functionの扱いはどうなってるんだろ?グローバル関数になるんだろうか。
> あと、viewファイル内で関数を定義するというのも、それがview関連処理だったとしても、
> コーディングとしてどうかと思います。まあこれは異論もあるかもですが。
そんなもんなんでしょうか?MVCフレームワークは不慣れな門で・・・
viewは見栄えを定義するもんだと思ってました。
viewは変数付きHTMLにちかく、ロジックが含まれるなら
ヘルパーとかのライブラリ側や別のテンプレートにもっていく、ということなんでしょうか?
というか、CodeIgniterというよりもMVC一般論の話になりますね
0517nobodyさん
2009/02/13(金) 00:25:52ID:???使えるならhelper定義すればいい。
その場限りならviewでも良いんじゃないの?
$hogeはshow_mage($title, $hoge)って引数に渡さないと駄目だろ。
functionが呼び出された時点でスコープが変わるんだから。他所のローカル変数は見えない。
話は変わるけど、誰かODBCの設定database.phpにどう書くか教えてくれない?
0519nobodyさん
2009/02/15(日) 14:39:09ID:???viewファイルで関数定義ってことは、結局クラスメソッド内で関数定義するのと同じ、なのかな
class Hoge
{
function say()
{
echo "hoge\n";
function say_page()
{
echo "page\n";
}
say_page();
}
}
$c = new Hoge();
$c->say(); #=> "hoge\npage\n"
say_page(); #=> "page\n"
say(); #=> (Fatal error)
なにこのPHPの仕様。関数の中で関数を定義するとグローバル関数になるのかな?
まあ名前がかぶったらFatal errorになるだろうけど、気持ち悪いのでできるだけviewで
ごにょごにょしない方がいいような。
だれか詳しい人解説してくれないかな・・・
0520nobodyさん
2009/02/15(日) 19:37:53ID:???JSPやASPみたいにクラス定義と一体化してるわけじゃない。
PHPではclassと明示しない限り、上から順番に処理される。関数はクラス内ならメソッド、そうでなきゃグローバル。
0522nobodyさん
2009/02/16(月) 00:01:29ID:???0523nobodyさん
2009/02/16(月) 00:31:53ID:???ユーザガイドにそんな記述あるの?
ソース見てみたので一応書いてみる。Kohanaだけどw
・標準のviewは CI_Loader::view メソッドで表示処理?
・そこから呼び出される _ci_loadメソッドでob_startされた後
echo eval( ごにょごにょ file_get_contents(〜〜) )
もしくは
include(〜〜)
・んで結果をreturn もしくは $OUT->output()
この仕組みなら、viewファイル内での関数定義は、CI_Lorder::_ci_loadメソッド内で
関数定義するのと同等かな。だから、同じテンプレートを2回読み込むと、多分Fatal Error
どこまでCIの現行バージョンで一緒か知らんし、実際に動かして確認してないので大嘘かも。
また、PHPで関数内で関数が定義できることやその動作については
http://ml.php.gr.jp/pipermail/php-users/2005-June/026279.html ← このツリーを
http://ml.php.gr.jp/pipermail/php-users/2005-June/026322.html ← この辺まで読んで納得。
PHP5でも仕様はこの当時のままっぽい?
以上、適当で嘘くさいので、間違ってたら誰か教えて・・・
0524nobodyさん
2009/02/16(月) 13:51:05ID:???remapした場合関数の引数に当たる部分はuri->segment以外で
とる方法はないのでしょうか?
サイトに載っている例では
function _remap($method)
{
if ($method == 'some_method')
{
$this->$method();
}
else
{
$this->default_method();
}
}
となっていて、引数部分がありませんよね。
現状switchで$methodの内容からsegmentで値引っ張って回してますが、
もうちょっとスマートな書き方はない物ですかね・・・
0525nobodyさん
2009/02/16(月) 14:47:15ID:???function _remap($method)
{
if (method_exists($this, $method)) {
call_user_func_array(array(&$this, $method), array_slice($this->uri->rsegments, 2));
}
else if (method_exists($this, $method.'_')) {
call_user_func_array(array(&$this, $method.'_'), array_slice($this->uri->rsegments, 2));
}
else {
call_user_func_array(array(&$this, 'index'), array_slice($this->uri->rsegments, 1));
}
}
なんでこうなったか忘れたけど、これ書いたとき結構調べたから
$this->uri->からとってくる以外ないと信じたい。
0526nobodyさん
2009/02/19(木) 14:54:17ID:???ファイルアップロードについてなんだが、
コントローラ/モデル/ビュー内で$_FILES受け取れないのは仕様?
◆ちなみにフォームはこんな感じ
<form method="post" action="/admin/update/" enctype="multipart/form-data">
<input type="text" name="name" />
<input type="file" name="photo" />
<input type="submit" name="submit" value="アップロード" />
</form>
◆Controller/admin.phpはこんな感じ
public function update(){
print_r($_POST); // 正常に出力
print_r($_FILES); // 空のArrayが出力される
print_r($_FILES["photo"]); // エラー「Undefined index: photo」
}
Kohanaフォーラムだと$_FILESで動いている投稿はあるんだけどなぁ。
完全手詰まりしてしまった。
0527526
2009/02/19(木) 15:42:52ID:???先ほどペーストしたコードで気づきました。
enctypeの直前スペースが全角でした。
うんこでした。
うんこでした。スレ汚しサーセンorz
0528nobodyさん
2009/02/20(金) 14:07:46ID:???ケツの穴にコルク栓をしておこう^^
0529nobodyさん
2009/02/20(金) 15:01:30ID:???0531528
2009/02/22(日) 20:33:01ID:???0532nobodyさん
2009/02/27(金) 20:37:16ID:???ZFのセッションとか使うようにできますか?
0533nobodyさん
2009/02/27(金) 20:52:19ID:???これ
ttp://codeigniter.com/wiki/Native_session/
使うかZendのセッションライブラリをapplication/librariesにおいて使えばおk
0535nobodyさん
2009/03/01(日) 10:39:27ID:???Fatal error: Cannot redeclare class Bbs in /usr/local/www/htdocs/.../system/application/models/bbs.php on line 100
0536535
2009/03/01(日) 10:40:15ID:???<?php
class Bbs extends Controller
{
//コンストラクタ
function Bbs()
{
parent::Controller();
$this->load->model('bbs');//bbsのモデル読み込み
}
//トップページ
function index()
{
echo "bbs menu";
}
//タイトル表示
function title()
{
echo $this->bbs->get_title();
}
}
?>
0537535
2009/03/01(日) 10:41:07ID:???<?php
class Bbs extends Model
{
//コンストラクタ
function Bbs()
{
parent::Model();
$this->load->database();
}
//タイトル取得
function get_title()
{
$query = $this->db->get('bbs');
return $query->result_array();
}
}
?>
0538535
2009/03/01(日) 10:46:22ID:???モデルクラス名として「Bbs」は使えないということでしょうか?
=Bbsというコントローラーの中で、Bbsというモデルを使うことができない?
みなさんは、モデルクラス名を付けるとき、どうしてますか?
=モデルを使うコントローラーのクラス名を重複しないように命名しないとダメなの?
「Bbs_model」とかだと、なんか長ったらしい><
0539【裂く裸ノ雨】初音ミク虐待スレ
2009/03/01(日) 10:50:35ID:fSY3QkVN0540nobodyさん
2009/03/01(日) 10:51:05ID:???0541nobodyさん
2009/03/01(日) 13:57:56ID:???チュートリアルやったんだけど、この後は何をすべきなんだろうか。
徹底入門って本どう?役に立ちます?
0543nobodyさん
2009/03/01(日) 20:30:49ID:???0544nobodyさん
2009/03/02(月) 00:25:39ID:???0545nobodyさん
2009/03/02(月) 00:29:17ID:???最初はオンラインのリファレンスを見てやってたけど、全体を俯瞰するのにページの切り替えが面倒に感じた
徹底入門はオフラインでどんどん読み進めるので役に立ったよ
最初慣れるまでリファレンスとして首っ引き
ActiveRecordクラスのメソッド名や、よく使うヘルパー関数を覚えたら、あとはほとんど見なくてもアプリを作れるようになった
時給1000円としても3時間分程度のコスト
CIで生産性アップしたらすぐに元は取れるし、本は読み終わったら売り払えばOK
最近買った本の中では元が取れた1冊だったと思います
0546nobodyさん
2009/03/02(月) 00:31:56ID:???あと携帯のセッション管理かな
この二つはネットで検索してフォローしました
(このスレの情報も役に立ちました^^)
0547nobodyさん
2009/03/02(月) 00:34:43ID:???ちょっとしたWEBアプリを作っているんですが、一緒に作ってみませんか?
=2chの過去ログを保存するWEBアプリです。
DATファイルからHTMLページを作成する機能をこれから作る予定なんですが、良かったらアドバイスとか勉強の材料にでも
0548nobodyさん
2009/03/02(月) 09:59:03ID:???今から始めるなら1.6とどっちがいいですか?
0549nobodyさん
2009/03/02(月) 10:55:51ID:???MLの方に 1.7の日本語化パックあったはず。完全じゃなかったとおもうけど
0550nobodyさん
2009/03/02(月) 13:52:32ID:???自分のアプリを作るときは1.7でやってます。
0552nobodyさん
2009/03/02(月) 19:18:28ID:???0554547
2009/03/03(火) 13:09:25ID:KbYnBJGq週末+αの4日くらいで作れた。
CIは便利!(・∀・)
0555nobodyさん
2009/03/03(火) 13:14:37ID:???1個だったら、POSTやGET(URLのセグメント)に入れて次ページに持ち越せると思うけど、
条件が複数個ある場合は、セッションに入れて持ち回りするのが楽ですかね?
条件をいったん配列に入れて、シリアライズして、エンコードして、無理矢理POSTやGETに埋め込むということもできるだろうけど、スゴク面倒くさそうです><
0556nobodyさん
2009/03/03(火) 14:43:08ID:???アドバイスありがとうございます。
検索項目が動的に増える作りなので、セッションにしようと思います。
もうひとつ質問なんですが、セッションの保存先をデータベースにした場合、
セッションテーブル内のデータはどのタイミングで破棄されるのでしょうか?
0557556
2009/03/03(火) 17:48:35ID:???お騒がせしました。
0558nobodyさん
2009/03/03(火) 22:28:40ID:???CodeIgniterのActiveRecord使った時に、SQL実行エラーが発生した場合の記述ってどうやるんでしょうか?
直書きのPHPだと以下のような記述ができるみたいなんですが・・・。
if (!$res = mysql_query($sql)) { //エラー処理 }
0559nobodyさん
2009/03/04(水) 12:21:43ID:???自己レス。
config.phpのdb_debugをFALSEにしたらエラー画面にリダイレクトしなくなりました。
が、エラーログも出力しなくなりました・・・。
運用時はこのDBデバッグ設定はOFFにするのが普通ですか?
0561nobodyさん
2009/03/18(水) 15:42:05ID:0CAtxxAV今ドライバに代わっちゃってるんだけど、俺なんか変なことしちゃってるんかな。
0562nobodyさん
2009/03/22(日) 16:03:22ID:???$_POST['name']を直接取得して、EUC-JPからUTF-8に変換すると、ちゃんと表示されます。
レンタルサーバで、標準の文字コードがEUC-JPです。
CIの文字コードはUTF-8を指定しています。
バリデーション以外は、特に文字化けしないんだけど、どうしたらいいでしょうか?
とりあえずなら、表示前にいったん文字コード変換すれば対応できるけど、こんなやり方はスマートじゃないですよね?><
0563nobodyさん
2009/03/22(日) 18:38:20ID:???0564nobodyさん
2009/03/27(金) 21:05:38ID:???どうもありがとうございます。
最初、.htaccessファイルをindex.phpがあるpublic_htmlフォルダにだけ置いていました。
CIが入っている別フォルダにも.htaccessを置いたら、文字コードを変えることができました。
まるっと解決!(・∀・)
0565564
2009/03/27(金) 21:11:08ID:???CIからお知らせメールを送信するとき、メールのsubjectが文字化けしていた。
.htaccessでinternel_encodingを変更するのは別に、文字コード指定の処理を入れたらメールの文字化けを回避できました。
↓↓↓
PHPのmb_encode_mimeheaderは事前にmb_internal_encodingが必要
http://www.akiyan.com/blog/archives/2006/03/phpmb_encode_mi.html
文字化けはもうイヤ><
0566nobodyさん
2009/04/08(水) 08:38:18ID:???0567nobodyさん
2009/04/10(金) 02:57:28ID:???今のところCIに落ち着いてます^^
次はkohanaかな?
0568nobodyさん
2009/04/10(金) 07:42:12ID:???0569nobodyさん
2009/04/10(金) 10:10:33ID:???0570nobodyさん
2009/04/10(金) 18:15:52ID:???0571nobodyさん
2009/04/10(金) 19:22:00ID:???趣味PGは無料PHPサーバでサコッとやる派の俺にはCIのほうが向いてる
業務だったらどうなるかは知らん
0572nobodyさん
2009/04/10(金) 22:57:20ID:???0573nobodyさん
2009/04/11(土) 06:45:27ID:???0574nobodyさん
2009/04/11(土) 10:02:49ID:???0575nobodyさん
2009/04/11(土) 12:36:26ID:???0576nobodyさん
2009/04/11(土) 13:00:06ID:???0577nobodyさん
2009/04/11(土) 14:24:33ID:???0578nobodyさん
2009/04/12(日) 17:02:08ID:???セッションは不評だし、
なんなのこれw
0579nobodyさん
2009/04/12(日) 17:04:06ID:???0580nobodyさん
2009/04/12(日) 22:51:09ID:???0581nobodyさん
2009/04/13(月) 07:37:14ID:???コンストラクタにでも以下を放り込めばいいw
$this->output->enable_profiler(TRUE);
俺は足りないから出力フックして、print_a(というライブラリがある)とかで任意にデータ構造を出力できるようにしたりしてた。
cakeのは俺は知らんのだけど、期待すると多分…
0582nobodyさん
2009/04/13(月) 07:52:00ID:???わざわざprintせんでも
0583nobodyさん
2009/04/13(月) 20:15:34ID:???一番余計なことをするFWはCI。
0584nobodyさん
2009/04/15(水) 16:53:53ID:???ドキュメントは英語だけど…(・∀・)
0585nobodyさん
2009/04/17(金) 22:01:40ID:???いや、CIのPHP4対応べったりにぶち切れて、Kohanaをメインに使って見てたんだが。
最近のCIのバージョンアップとか追いかけてないな・・・
なんだかんだ言って、CIの方が継続的に人がついてるわけだしなあ
CIがPHP4を切り捨てる方向性さえ出してくれれば、と切に思う。
0586nobodyさん
2009/04/18(土) 12:11:12ID:???0587nobodyさん
2009/04/18(土) 18:39:53ID:???0588nobodyさん
2009/04/18(土) 20:36:11ID:zinmsTt6PEARから追加してるんだけど、
ZFのを追加した方がいいの?
0589nobodyさん
2009/04/18(土) 23:45:48ID:???何もかも中途半端な感じがする。
■ このスレッドは過去ログ倉庫に格納されています