【PHP】Yii Framework
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2010/12/10(金) 00:41:11ID:???公式
http://www.yiiframework.com/
チュートリアル
ttp://www.yiiframework.com/doc/guide/
公式フォーラム
ttp://www.yiiframework.com/forum/index.php?/forum/21-japanese/
0495nobodyさん
2012/01/09(月) 19:59:48.34ID:???どういう意味だ?
Webアプリのボトルネックは大抵DBへのアクセスだから、
そのアクセスを減らす意味でかなり有用だと思うjけど
0496nobodyさん
2012/01/09(月) 21:51:40.82ID:???そんなことしてPHPに定数持たせるくらいなら、JAVA辺りで組んだサービスで
起動時にデータベースから読んだ値をオンメモリで格納しておく方が
理にかなってるってこと。
0497nobodyさん
2012/01/09(月) 21:59:39.65ID:???違う違う
スケールアウトの問題だよ
RDBMSはスケールアウトしにくいだろ
JAVAとPHPの比較するような事柄じゃない
0499nobodyさん
2012/01/09(月) 22:03:31.07ID:???え、トンチンカンなこと言ってるのかな
逆にJAVAを引き合いに出した先の話がオンメモリに格納とか、JAVA関係ねえじゃんって感じたんだが
知識あると自負しておられるようなので、出来ればご高説承りたいですね
0500nobodyさん
2012/01/09(月) 22:10:38.39ID:???だからJAVA辺りでって書いてあるじゃん。
PHPでやるならmemcachedなんかを使うほうが理にかなってる。
データベースにあるべきと設計した項目をパフォーマンスを理由にコードに
埋め込むなんてのは最悪の下策。
0501nobodyさん
2012/01/09(月) 22:22:19.11ID:???そもそも>>494は設計思想の話全然出てないじゃん
レコード読み出しでデータベースの性能問題が出るなら、他の言語使えって言ってるようにしか見えないよねえ
でも他の言語持ち出す意味もよく分からないし、偉そうなこと言った割には主張に一貫性がないように見えるけど大丈夫ですか?
0503nobodyさん
2012/01/09(月) 22:32:58.81ID:???反省です
0505nobodyさん
2012/01/09(月) 23:06:36.79ID:???0506nobodyさん
2012/01/09(月) 23:17:53.09ID:???>>500を読んでやっとわかったわ。
正直感じ悪いな。
0507nobodyさん
2012/01/09(月) 23:34:47.97ID:???既に決定?
0508nobodyさん
2012/01/09(月) 23:59:23.03ID:???0510nobodyさん
2012/01/10(火) 00:18:02.04ID:???3値あれば十分でしょ。
0511nobodyさん
2012/01/10(火) 00:30:52.59ID:???afterFindで0は'男性'、1は'女性'とかに置き換えるってのは無駄なのなんなのか、よくわからなくなって・・
0512nobodyさん
2012/01/10(火) 01:30:05.92ID:???0514nobodyさん
2012/01/10(火) 15:52:48.64ID:???memcachedの代わりに使うケースって少ないね。
0515nobodyさん
2012/01/10(火) 16:08:23.68ID:???下はrenderPartialの出力が画面表示になる
0516nobodyさん
2012/01/10(火) 16:34:35.09ID:???試してみてなんとなくわかりました。ありがとうございます。
ただ、どういった用途で使うかが見えてきません。
例えば、結果を返り値として文字列で受け取る場合などは
メールのテンプレートなどに利用できそうですが・・
出力が画面表示になる場合は、普通に$this->renderPartial('dummy');とする場合との違いがわかりません
0517nobodyさん
2012/01/10(火) 17:02:51.12ID:???変換したり、ファイルに保存したり
0518nobodyさん
2012/01/10(火) 21:51:45.37ID:???$this->render('dummy', null, false, ture);のやつ
0519nobodyさん
2012/01/10(火) 21:52:10.57ID:???0520nobodyさん
2012/01/10(火) 21:54:26.20ID:???print_r($hoge);
ということじゃねーの?
0521nobodyさん
2012/01/10(火) 23:32:07.77ID:???0522nobodyさん
2012/01/10(火) 23:34:37.35ID:???APIリファレンスを見ると、4つめをtrueにするとprocessOutputで後処理されるって書いてる。
で、processOutputを見ると、scriptタグを挿入したり、hiddenフィールドに値を埋め込んだりするみたい。
だから、たぶんrenderPartial単体を画面表示したいときに使うんじゃないかな。
0523nobodyさん
2012/01/11(水) 14:12:56.17ID:???結果受け取ってどうすんのって事例は、CControllerのrenderの中身見ればいい
main.phpにcontent引数として渡して描画してるだろ
0524nobodyさん
2012/01/11(水) 15:24:04.56ID:???どんな具合で処理が流れていっているのかわかりますね
いやぁしかしYiiのAPIはすばらしく見やすい
0525nobodyさん
2012/01/12(木) 08:42:21.68ID:???0526nobodyさん
2012/01/12(木) 13:00:12.98ID:???0529nobodyさん
2012/01/12(木) 15:48:04.55ID:???0530nobodyさん
2012/01/12(木) 16:45:04.41ID:???ユニットテストを難しくする汚染要素を隔離するためにあるのでは?
具体的に言うとこんな感じ。
View(GUI, xml, html, json)
Controller(Session, Request, Form, 画面遷移などWeb独自のデータ)
Model(RDB, KVS)
MとCが分離されることでMはWebスコープから分離され、CはSQLから分離される。
でもこの理屈だとVとCの関係がおかしくなっちゃうね。
CがVにデータを渡すときはリクエストスコープを経由しないで
直に関数の引数で整数や文字列、オブジェクトを渡すべきって話になるから。
0535530
2012/01/12(木) 17:15:53.28ID:???ごめん、誤爆した。
こっちでMVC云々にレスしたつもりだった
PHPでOOP
http://kohada.2ch.net/test/read.cgi/php/1172205352/
0536nobodyさん
2012/01/12(木) 18:37:20.23ID:???0537nobodyさん
2012/01/12(木) 20:22:41.51ID:???0538nobodyさん
2012/01/13(金) 00:04:12.96ID:???0539nobodyさん
2012/01/13(金) 00:19:04.76ID:???RoRとか?
0540nobodyさん
2012/01/13(金) 19:59:17.41ID:???accessRulesやfilterのみ適応して
PHPファイル名そのままで表示させたいです。
action関数を書かないで済む簡単な方法が
あれば教えて頂けませんか?
Yiiの認証を使ったファイル置き場が作りたい感じです。
0541nobodyさん
2012/01/13(金) 20:27:30.80ID:???0542nobodyさん
2012/01/14(土) 00:05:26.00ID:???日本語化コミットしようぜ
0543nobodyさん
2012/01/14(土) 10:02:07.26ID:???0544nobodyさん
2012/01/14(土) 10:25:45.65ID:???urlManagerルーターのaliasでも手間?
'something/<alias>'=>'something/rawdraw'
Class SomethingController ....
{
public function actionRawdraw($alias) {
echo $alias;
}
}
http://foo.org/something/bar.php
0549nobodyさん
2012/01/14(土) 21:04:16.08ID:???ってどういう仕組なの?
スタティックじゃないメソッドをスタティックで呼べるって強すぎない?
0550nobodyさん
2012/01/14(土) 21:57:37.93ID:???0551nobodyさん
2012/01/14(土) 21:59:13.89ID:???call_user_func
0552nobodyさん
2012/01/14(土) 22:57:03.24ID:???0553nobodyさん
2012/01/14(土) 23:07:12.19ID:???0554nobodyさん
2012/01/14(土) 23:32:36.39ID:???0555nobodyさん
2012/01/14(土) 23:51:33.45ID:???0556nobodyさん
2012/01/15(日) 23:03:55.87ID:???見ると勉強になるし、アプリの作り方がわかる。
0560nobodyさん
2012/01/16(月) 19:39:01.84ID:???0561nobodyさん
2012/01/16(月) 19:41:57.11ID:???0562nobodyさん
2012/01/16(月) 22:29:25.13ID:???0563nobodyさん
2012/01/17(火) 14:35:07.52ID:???勉強になってよかったね、で済む話じゃん
0566nobodyさん
2012/01/17(火) 18:16:13.97ID:???まったり行きましょう
0567nobodyさん
2012/01/17(火) 18:19:37.28ID:???0570nobodyさん
2012/01/17(火) 20:51:23.14ID:???0572nobodyさん
2012/01/19(木) 00:28:06.83ID:???checkBoxListで表示(該当部分をチェック)させるのってどうやってやるんだ・・・3日間かかったが挫折した
0573nobodyさん
2012/01/19(木) 00:50:32.42ID:???0574nobodyさん
2012/01/19(木) 01:10:41.70ID:???いやHAS_MANYも試してないけど、多分できない気がする
オブジェクト→checkBoxListに渡す配列への変換を自動でしてくれないんだな
フレームワークなのにこういう重要な部分を手動でしてくれないのかな?
0575nobodyさん
2012/01/19(木) 01:14:25.50ID:???http://www.yiiframework.com/doc/guide/1.1/ja/form.table
これは答えになる?
0576nobodyさん
2012/01/19(木) 05:18:57.24ID:???取得したレコードを元にチェックボックス用の配列を返すメソッドを用意したほうがはやそう。
0577nobodyさん
2012/01/19(木) 19:00:57.37ID:???>>575のやり方+こうやればいいだけじゃないの
$data = array();
foreach($models as $model) {
$data[$model->id] = ''label";
}
>checkBoxListで表示(該当部分をチェック)させるのって
あと、gridviewとか使って各モデルの情報を一行で表してるなら、checkBoxListは妥当ではないと思うな
その場合、1行ずつチェックボックス付ければいいだけじゃね
'CHtml::activeCheckBox($data, "check")',
まあ、やりたいことが分からないよね
0578nobodyさん
2012/01/21(土) 16:42:05.68ID:???・管理用Controllerを作って、そこにアクション押しこむ
・そもそも別にフォルダ作って、ユーザ用と管理用のprotectedを別々に管理する
他にもいろいろ方法あるかな
俺はとりあえず前者で作ってるんだけど、
バグで脆弱性作っちゃったり、セキュリティを考えると後者のほうが良い感じだけど、
同じ処理を持たなきゃいけなかったり無駄が多そうだよね
0579572
2012/01/22(日) 00:44:52.66ID:???ありがとうございます。
やりたいことは、
投稿にMANY_MANYでタグが関連付けられているといったときのケースです。
Post、PostTag、Tag
というモデルがあり、
PostのフォームにcheckBoxListで
あらかじめあるタグリストがチェックボックスでずらーっと並んでいるとき、
投稿のフォームでチェックした複数のタグをPostTagに投稿ID+タグIDを保存する
保存するときは、PostモデルのafterSaveでチェックボックスの配列をforeachして
手動で保存していたのですが、
既存の投稿を編集(アップデート)するときに、関連付けられたタグを
投稿したときと同じようにデフォルトでcheckedを入れたかった
ただ、いろいろ調べたりアドバイスを見るかぎり、
アップデートのときも手動でforeachしてcheckedするしかないようですね。
ありがとうございました!
0580nobodyさん
2012/01/22(日) 18:12:42.38ID:i1iVcXOA用途は違うけど、これがたぶん君が言っている自動化に近いと思う
// postアクションメソッド.
$model = new Post;
if(isset($_POST['Post'])){
try {
$transaction = Yii::app()->db->beginTransaction();
$model->attributes=$_POST['Post'];
foreach($_POST['Post']['tags'] as $tag) {
$postTag = new PostTag();
$postTag->id_post = $model->id;
$postTag->id_tag = $tag;
$postTag->save();
}
$model->save();
$transaction->commit();
} catch(Exception $e) {
$transaction->rollBack();
}
}
// view
echo CHtml::activeCheckBoxList($model, 'tags', CHtml::listData(
Tag::model()->findAll(), 'id', 'name'
));
※インデントは全角スペース、エラー処理はなし、実行してない
こんな感じ?
と、ここまで書いて、下のエクステンション見つけた
http://www.yiiframework.com/extension/esaverelatedbehavior/
俺もいろいろ勉強になった、ありがとう
0581nobodyさん
2012/01/23(月) 03:55:32.99ID:???おつ
MANY_MANYの保存は2つ目のURLのエクステンションでいけるね
アップデートのときにcheckBoxListをcheckedさせるには1つ目のURLにヒントがあった
0582nobodyさん
2012/01/23(月) 19:13:13.51ID:g71C+axW0583nobodyさん
2012/01/24(火) 06:12:58.16ID:???0584nobodyさん
2012/01/24(火) 15:29:19.24ID:7osuj7Qxこれくらいは英語で十分だなって思ってただけど、やっぱり読むスピードが全然違うな
0585nobodyさん
2012/01/25(水) 01:04:42.19ID:PRfu+W52WEBサーバーの処理800msのうち10ms〜20msくらいでrender出来ちゃう
0586nobodyさん
2012/01/25(水) 13:51:38.28ID:???ARとかどこで使うんだあれ。
0587nobodyさん
2012/01/25(水) 13:53:45.77ID:???ローカルではうまくいくのに、さくらインターネットにアップロードすると
トップページは表示されるものの、コントローラなどがInternal Sever Errorになってしまいます。
ローカルの設置場所:
DOCUMENT_ROOT/example.com/
さくらインターネットの設置場所:
DOCUMENT_ROOT/example.com/
(/home/USERNAME/www/example.com/)
上記の「example.com」がアプリケーションのディレクトリ(protectedなどがあるもの)です。
htaccessの内容は、
RewriteEngine on
RewriteBase /example.com
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php
こうなっています。
ドキュメントルートからの構成は同じで、
ローカルではちゃんと表示されているんですが・・・
0588nobodyさん
2012/01/25(水) 19:11:55.85ID:???その時はもうindex.phpありでいいやで妥協しましたが
これ何が原因なんでしょうかね。Apacheのバージョン?
0589nobodyさん
2012/01/25(水) 19:25:30.26ID:YwP4y9rdYii全く関係ないじゃん
0590nobodyさん
2012/01/25(水) 19:49:43.53ID:???0591nobodyさん
2012/01/25(水) 20:02:54.58ID:???■ このスレッドは過去ログ倉庫に格納されています