トップページphp
981コメント269KB

【PHP】Yii Framework

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2010/12/10(金) 00:41:11ID:???
PHP5 用 Framework Yii (イー) Framework スレ

公式
http://www.yiiframework.com/

チュートリアル
ttp://www.yiiframework.com/doc/guide/

公式フォーラム
ttp://www.yiiframework.com/forum/index.php?/forum/21-japanese/
0724nobodyさん2012/02/19(日) 20:06:55.31ID:???
>>722
scenarioっていう便利な機能があるよ
0725nobodyさん2012/02/19(日) 20:23:12.13ID:???
>>723
state作成いたら成功した!
>>724
新しいscenario選択したらデフォルトのvalidateは利用されない仕組みなのかな
ちょっと試してみる!

二人ありがとYii
0726nobodyさん2012/02/19(日) 21:01:16.48ID:???
scenario選択してもはデフォルトのvalidateルールは有効だよ
ただ、俺はvalidateの切り分け以外にscenarioを使うのはおすすめしないな
なんか前にもこんな話したよね
0727nobodyさん2012/02/19(日) 23:31:59.69ID:???
反則かもしれないがアクション名で振り分けられる
モデルでYii::app()->controller->action->idを使ってさ
あとはプロパティがempty時はこうする、とかさ。いろいろあるさ〜
0728nobodyさん2012/02/19(日) 23:36:20.48ID:???
scenarioをvalidate以外で使うのをおすすめしない理由とは?
0729nobodyさん2012/02/19(日) 23:39:31.37ID:???
state作成とは、具体的にどうしたのか教えてもらえますか?
0730nobodyさん2012/02/20(月) 01:14:34.72ID:???
>>729
modelのclass変数を作成して
それをsave()前に$model->state=falseとかした感じ

beforeSave()の中で$this->stateでifして処理振り分け
0731nobodyさん2012/02/20(月) 02:03:58.18ID:???
>>730
なるほどー。一番良いやり方かもしれないですね。ありがとう。
0732nobodyさん2012/02/20(月) 03:43:08.62ID:b6WVXuP+
>>728
あとから見た時、分かり難いから
scenarioはruleを切り分けるという目的で追加されているのに、
他の目的で使うと、後で見た時になんだこれってなっちゃう危険がある
>>727の方法もいいね、っていうか前の話でも出てたなw
0733nobodyさん2012/02/20(月) 06:00:09.92ID:???
Yii::app()->controller->action->idはコンソールからモデルを実行するとき使えなくなるので
stateプロパティをモデルにもたせるのが良い方法かな
0734nobodyさん2012/02/20(月) 19:00:30.74ID:???
>>732
例えばbeforeSave()で分岐したいがためにrulesにscenarioを設定するのは違うけど
結果、$this->scenario !== 'insert'みたいのを利用できるのであれば、それはそれで使ってもかまわないってことだよね?
0735nobodyさん2012/02/20(月) 20:29:22.19ID:b6WVXuP+
>>734
それもinsert以外のscenarioの意味(効果)を変えちゃうから、俺は原則、使わないようにしてるよ
でも利用した方がベターなケースもあるかもしれないし、beforeSave()を利用したくない理由が分からないのに、
scenarioを使うのはおすすめしないって言ったのは適切ではなかったかも
単に、自分ルールとしてscenarioはvalidate ruleを切り分けるためだけに使ってる、って言うべきだったかな

結局は環境(体制、設計、規模など)によって、自然で分かりやすい実装ってのも変わってきちゃうよね
0736nobodyさん2012/02/20(月) 21:36:24.53ID:???
scenarioの意味ってruleを切り替えるってことだったんだ
初めて知ったわ
0737nobodyさん2012/02/20(月) 22:16:12.46ID:???
734ですが
$this->scenario !== 'insert'部分は
CActiveRecord::isNewRecordを使うほうがいいですね。すみません

いろんなもので代用できる分、役割をはっきり持たせて実装するってのは大切ですね
0738nobodyさん2012/02/21(火) 04:41:21.93ID:???
コンソールアプリでログの出力の仕方が分からん!
configはあってるはず・・・
0739nobodyさん2012/02/21(火) 05:23:46.97ID:???
ここらへんはどう?参考になるかね
http://www.yiiframework.com/forum/index.php?/topic/10421-logging-in-long-running-console-app/
0740nobodyさん2012/02/21(火) 05:41:14.37ID:???
今試してみたんだが、普通にログ出力できたけどねぇ
レベルがマッチしていないとかではないかい?
0741nobodyさん2012/02/21(火) 13:07:06.05ID:???
Yii::app()->nameって使うようで使わないな
layoutのmain.phpとかでは使うようにしてたんだけど、
他のviewでは結局サイト名を手打ちしてしまう。
0742nobodyさん2012/02/21(火) 22:14:58.43ID:???
メールとかで使うよ Yii::app()->name
0743nobodyさん2012/02/22(水) 00:04:11.80ID:???
>>742
どゆこと?
0744nobodyさん2012/02/22(水) 00:24:57.94ID:FnoANuGB
$body .= Yii::app()->name.'です。\nお世話になっております。';
ってことじゃね
0745nobodyさん2012/02/23(木) 05:54:50.59ID:???
レコードの挿入日時みたいなデフォルト値ってどこで設定してる?
モデルのrulesで設定してるんだけどここでいいのかな

ってかrulesのdefaultはどのタイミングで設定されるん?
1回目バリデーション失敗して、次送信したときまた新たに設定される?
0746nobodyさん2012/02/23(木) 08:37:03.38ID:???
>>745
ふつうはDBMSのトリガー使うよね。
0747nobodyさん2012/02/23(木) 09:11:29.65ID:???
beforeSave()
0748nobodyさん2012/02/23(木) 12:03:11.26ID:???
CTimestampBehaviorってものがあってだな。
俺はこれを使ってる。
0749nobodyさん2012/02/23(木) 15:12:02.57ID:???
API: CTimestampBehavior
http://www.yiiframework.com/doc/api/1.1/CTimestampBehavior
07507452012/02/23(木) 15:20:41.42ID:???
え?モデルのrulesのdefalutってこういう使いかたするんじゃないの?
一応うまくいってるけど
あと、ユーザー登録のアクティベートキーの生成&attributesに設定とかも
rulesのdefalutでやってるけど


array('created', 'default', 'value'=>time()),
array('actkey', 'default', 'value'=>$this->createActkey(), 'on'=>'register'),
0751nobodyさん2012/02/23(木) 15:47:38.45ID:???
ここ見ると、どっちでも良いような書き方ですよね
http://www.yiiframework.com/wiki/10/how-to-automate-timestamps-in-activerecord-models/
0752nobodyさん2012/02/23(木) 16:49:23.70ID:???
親モデルを作って、下みたいなの書いたら、すべてのテーブルで自動でやってくれて便利ですよ
1カラム更新時にupdate_timeも更新したい場合は、例えば$this->update(array('hoge', 'update_time'));みたいにすればOKです

<?php
class ActiveRecord extends CActiveRecord
{
public function behaviors()
{
if ($this->hasAttribute('create_time') && $this->hasAttribute('update_time'))
return array(
'CTimestampBehavior' => array(
'class' => 'zii.behaviors.CTimestampBehavior',
'setUpdateOnCreate' => true,
),
);
else
return array();
}
}
0753nobodyさん2012/02/23(木) 17:22:27.23ID:???
「一部のsave()でbeforeSave()を利用したくない」
これ、cakeでは'callback' => falseみたいのありましたよね?ほしいですねyiiにも
0754nobodyさん2012/02/23(木) 22:28:10.74ID:???
お安い御用です
0755nobodyさん2012/02/26(日) 12:56:19.56ID:???
txtファイルに読み書きしたいんですが、
そういうファイルはどのフォルダに入れるのが普通なんでしょうか?
0756nobodyさん2012/02/26(日) 15:20:43.51ID:???
てきとうにフォルダつくってfopen()しようとすると
エラーが出るのですがfopen()はそもそも使えないのでしょうか
0757nobodyさん2012/02/26(日) 17:49:48.25ID:???
file('http://yahoo.co.jp');
なら何も問題ないんですよね。

protected/controllers/test.phpで
file('../../test/test.txt');
だとエラーになります。
webrootにあるtestフォルダのtest.txtを読むにはどうしたらいいのでしょうか・・・
0758nobodyさん2012/02/26(日) 18:43:23.62ID:???
ファイル操作をするならこれを使う良い
http://www.yiiframework.com/extension/cfile/
0759nobodyさん2012/02/26(日) 19:17:25.20ID:???
>>758
早速試してみます! ありがとうございます。
0760nobodyさん2012/02/26(日) 19:23:27.33ID:???
相対パスで指定するなら、現在のカレントディレクトリがどこかを確認しれ。
URL上のパスではなく、OSの上でのパスな。
もしくは絶対パス使え。

ファイルの配置場所は、Web上からも見れていいものなら、Webルート配下でもなんでもOK。
見せたくないなら、それ以外の場所にするか、.htaccessなんかでそのディレクトリに制限かけとけ。
yiiならprotected/以下はアクセス制限かかるだろう。

一般的にどこにおくか、というよりは、そのファイルが何のファイルか、
どのような配置にあるのが意味が通じやすいか、とかそういうのを考えて配置すれば良いよ。
設定ならconfig/なりsettings/なりつくってその下にまとめたり、ログならlogs/にまとめる、とかそういう。
変数名どうするかとか、クラス名どうするかとか、パッケージどうわけるかとか、そういったのと同じ。

あと、パソコン初心者()じゃないんだから、「エラー」じゃなくて、そのエラーの内容からちった判断しれw
0761nobodyさん2012/02/26(日) 19:45:32.43ID:???
>>760
>現在のカレントディレクトリがどこかを確認しれ。

どうしてこれをやらなかったのかorz
file(getcwd().'/test/test.txt');
であっさり解決しました。人に聞く前に確認しろとorz
完全にあまえでした、すみません。

ファイルの配置のお話も勉強になりました。
見られておkなのでルート直下にディレクトリつくって放り込みました。

>そのエラーの内容からちった判断しれw
恥ずかしいですほんとにorz
「そんなファイルないよ」ってエラーでした。

あーだこーだやってたのが解決してとてもすっきりしました。
親切に教えていただいて、本当にありがとうございました。
0762nobodyさん2012/02/26(日) 21:35:39.39ID:???
yiiでお気に入りの機能とかありますか?
あと、これをこうしたら、すごく便利になったとか
0763nobodyさん2012/02/29(水) 11:54:14.13ID:???
Yiiは日本では流行らないよ
このスレの住民は初心者に対して高圧的な奴が多いから
0764nobodyさん2012/02/29(水) 14:41:37.99ID:???
高圧的だからとかそういう理由で選ぶもんじゃないけどなw
0765nobodyさん2012/02/29(水) 17:23:22.19ID:???
2chの人が優しければ流行るのか?
0766nobodyさん2012/02/29(水) 23:42:39.00ID:Ha59kcRM
>>763
個人的にはそういう奴を見つけたらソフトに排除するようにしてるんだけどね

そもそも2chの影響力なんてほとんどないっていう根本的なところに気付くべき
結局、日本語の情報が少ないのが原因でしょ
0767nobodyさん2012/02/29(水) 23:49:06.05ID:???
ほらな
初心者の質問がきても威嚇攻撃するから流行らない
結果、利用者がいなくて日本語の情報も少ない
0768nobodyさん2012/02/29(水) 23:52:23.66ID:???
流行ったら困るのか?
0769nobodyさん2012/03/01(木) 00:06:40.94ID:???
逆にCakePHPが流行ってるのってトレンド見る限り世界的に見ると日本だけだよね?
なんでだろう。
0770nobodyさん2012/03/01(木) 01:35:56.56ID:???
ガラパゴスらしいな
0771nobodyさん2012/03/01(木) 02:17:30.16ID:???
たしかにこのextentionは使っとけみたいな日本語のまとめは欲しいな
0772nobodyさん2012/03/01(木) 07:48:51.01ID:???
>>769
PHP4に縋りついてるゴミが多かったから
0773nobodyさん2012/03/03(土) 22:35:47.81ID:???
モデルのrules()に以下のように書いてもエラーメッセージが反映されないのはバグですか?
array('password', 'length', 'min'=>6, 'max'=>20, 'message'=>'6〜20文字で入力してください。'),

実際に表示されるエラーメッセージ
  パスワード が短過ぎます(最小 6 キャラクタ)。

ちなみに、unique、compareでは指定したメッセージが表示されました。
0774nobodyさん2012/03/03(土) 23:27:49.61ID:???
まずはPHPからだな。。
07757732012/03/03(土) 23:44:52.29ID:???
すみません自己解決しました。
http://www.yiiframework.com/forum/index.php/topic/21942-length-rule-message/page__p__107400__hl__me+age+length#entry107400
0776nobodyさん2012/03/04(日) 12:55:12.34ID:???
>>773
あーそれ俺もはじめはまったわ。
0777nobodyさん2012/03/05(月) 00:57:03.92ID:???
$message = '6〜20文字で入力してください。';
array('password', 'length', 'min'=>6, 'max'=>20, 'tooShort'=>$message , 'tooLong'=>$message , 'allowEmpt'=>false);
という感じかな?なるほど勉強になった。ありがとう。
0778nobodyさん2012/03/05(月) 00:57:45.13ID:???
allowEmptyな
0779nobodyさん2012/03/06(火) 12:18:46.28ID:???
>>777
ふとした時に、はたしてこういうのは開発効率がいいのかどうかといつも疑問に思ってしまう。
0780nobodyさん2012/03/06(火) 13:01:53.00ID:???
ifで書くよりは早いんじゃない?
0781nobodyさん2012/03/06(火) 16:43:43.22ID:???
確実にはやい。
特殊なバリデートの時は、独自で作ればいいだけだし。
0782nobodyさん2012/03/08(木) 14:36:30.75ID:???
Yiiとかつまんねーよ
0783nobodyさん2012/03/08(木) 14:48:17.09ID:???
PHPのフレームワークでは間違いなく一番出来がいい
PDO使ってるのが導入の障壁になってんの?
0784nobodyさん2012/03/08(木) 18:32:32.73ID:i+TebrmP
そうなの?
PDOが使えない環境って例えばどういうの?
0785nobodyさん2012/03/09(金) 12:55:26.85ID:???
PDO使えないサーバを探すほうが難しいが・・・
0786nobodyさん2012/03/09(金) 15:50:42.98ID:???
ぺ、ぺどだってーーーー!?
0787nobodyさん2012/03/09(金) 21:41:28.62ID:???
portsのphp5-extensionsで入れられねーだよ
@FreeBSD
0788nobodyさん2012/03/10(土) 10:23:30.51ID:???
ttp://povertyprogramming.co.cc
この嫌儲のサイトがYiiというものでつくられてるらしいんですけど
初心者でもできますか?strongタグで太字にしたりするのはできます。
0789nobodyさん2012/03/10(土) 10:48:11.83ID:0UAYpjt7
phpを勉強する必要がありますけど、Yii Frameworkは初心者の方でも問題ないと思います。

http://www.yiiframework.com/doc/guide/1.1/ja/index
ここにガイドがあります
0790nobodyさん2012/03/10(土) 10:51:45.67ID:???
>>789
ありがとうございます! 早速読んでみます
0791nobodyさん2012/03/10(土) 11:41:30.57ID:???
>>788
ステマ乙
0792nobodyさん2012/03/10(土) 11:44:36.32ID:???
自力でドキュメント見て解決できないと初心者は厳しいです
Yiiは基本的に鎖国社会なので質問しても教えてくれる人を探すのは厳しいでしょう。
このスレも初心者には厳しいです。
まずはCakePHPなど国内の利用ユーザー数が多いフレームワークから始めることが成功の近道です。
Yiiから入ると問題にぶち当っても人に聞いても解決できないのは人生の無駄遣いです
0793nobodyさん2012/03/10(土) 13:39:25.68ID:???
>>792
ステマ乙
0794nobodyさん2012/03/10(土) 14:03:30.99ID:???
ちょくちょく前から>>792は同じことばっか言ってるけど、よほど相手にされなくて悔しかったんだろうな
まともに質問してるやつで無視されてる奴なんてあんまり見たいけど
0795nobodyさん2012/03/10(土) 14:38:58.61ID:???
日本だけじゃ情報少なくて、全ての質問に答えれるほど習熟してる人なんて
今のところほぼ居ないに等しいような状況なのはわかってて、Yii触ったんだろうに

2chのスレが気に食わないから使わない、も個々の判断だけど
そんなくだらない理由で意固地になることはすごく勿体無い判断だと思うわw
0796nobodyさん2012/03/10(土) 15:16:38.79ID:???
>>794お前のような陰湿な奴がいなくなればいいのに
0797nobodyさん2012/03/10(土) 15:25:26.75ID:???
質問したら叩かれたかなんかしらんけど、それを理由にスレを貶めたい、みたいな
くだらない事に躍起になってる奴に、事実を突きつけて煽ったりして
程度の低い争いを繰り広げようとする人は、たしかに必要ないな。

相手は意固地になってるんだから、何を言っても突っかかってくるだろう。
相手をする事自体が間違い。>>792みたいなのはスルーするのが正解。
0798nobodyさん2012/03/10(土) 15:45:23.77ID:???
まあごく一部の人間が初心者をからかってるのは事実
0799nobodyさん2012/03/10(土) 16:00:19.34ID:???
2ちゃんなんてもともとそんなもんだろ
んな煽りでイライラしてるほうがおかしい
0800nobodyさん2012/03/10(土) 16:00:42.98ID:???
だなぁ。そんなことよりYiiの話しようぜ!
0801nobodyさん2012/03/10(土) 16:37:26.60ID:???
ログインしたユーザーのプロフィールページを表示するのに
以下のようにやってるんですけど、これでいいんでしょうか?
無駄とかあったら教えて欲しいです。

■UserController
public function actionIndex() {
  $model = new Post; // ←tweetするフォーム
  $user = User::model()->findByPk(Yii::app()->user->id);
  $this->render('index',array(
    'model'=>$model,
    'user'=>$user,
  ));
}

■views/user/index.php
<div><?php echo $user->username; ?></div>
<div><?php echo $user->profile; ?></div>
<!-- あとはpostフォームとかいろいろ -->
0802nobodyさん2012/03/10(土) 18:01:31.53ID:???
Yiiの話が来た途端だんまり
0803nobodyさん2012/03/10(土) 18:17:30.79ID:???
>>802
しね
08048012012/03/10(土) 18:18:55.57ID:MBX05hQs
すみません念のためID出しておきます。
よろしくお願いします。
0805nobodyさん2012/03/10(土) 18:38:26.51ID:???
>>794が答えてくれるはずだから待ちましょう!
0806nobodyさん2012/03/10(土) 18:49:05.69ID:???
>>801
無駄な所は特に感じないです。
想定通り動いてるなら問題ないのでは?
0807nobodyさん2012/03/10(土) 18:51:47.82ID:0UAYpjt7
特に無駄とかはないように見えますけど
08088012012/03/10(土) 19:09:18.46ID:MBX05hQs
ありがとうございます。
これでいいのかなぁと漠然とした不安があったので助かりました。
0809nobodyさん2012/03/12(月) 15:21:13.03ID:???
Yii勉強したいんだけど、他のFWと比べて何でこんなにHowToブログ記事少ないんだ?
0810nobodyさん2012/03/12(月) 15:29:30.95ID:???
・日本人に情弱=簡単な英語すら理解できない人たちが多いから
0811nobodyさん2012/03/12(月) 15:51:07.03ID:???
アウトプットしようと考えているヘビーユーザーがいないだけ
0812nobodyさん2012/03/12(月) 17:00:35.79ID:Qdae9kKU
日本人のほとんどはYii学べるくらいの英語力は持ってると思うけどな
ただ、英語アレルギーは結構あるよね
やっぱカリスマが牽引しないとコミュニティは成長しないんでしょ
0813nobodyさん2012/03/13(火) 16:51:05.10ID:???
>>812
普通の日本人は、英語ってだけで見ようともしないよ。
英語力がどのくらいないのかは分からないけど、まああまりないと思うよ。
別に日本国内で英語いらないし。
0814nobodyさん2012/03/13(火) 18:49:20.87ID:???
requirements見ると色々必要っぽいですが、
さくらのレンタルサーバーでも使えますか?

さくらで使えたら即移行するんですが・・・
0815nobodyさん2012/03/13(火) 18:56:09.19ID:OgH0Qw3S
>>121-124
APC使えない説があるぞ
0816nobodyさん2012/03/14(水) 11:18:23.67ID:???
>>814
さくらの1500円のレン鯖で使ったが普通に動いた。
apc利かないから大規模なやつは無理っぽい
08178142012/03/14(水) 13:54:04.14ID:???
おおっ!
最初は共用で、
規模が大きくなってきたらVPSやらに移ってAPC使えばおkですね。

てか、Yii楽しすw
0818nobodyさん2012/03/14(水) 20:25:32.84ID:zqK1VJfD
apc使えなくてもCFileCacheとか使えば
何も使わないよりはいいと思うよ
0819nobodyさん2012/03/14(水) 21:04:22.40ID:832chJcq
え、Yiiの実行がAPCで早くなるのはコードキャッシュの話だろ?
0820nobodyさん2012/03/15(木) 07:02:06.97ID:E3IxfR1a
群馬県高崎市に住む41歳AB型、製造業界で派遣プログラマーの仕事をしているhekenekoこと、黒飛健と申します。
新日本テクトスという会社を追われ、その後どうしてよいかわからなくなりました。
だけど私の大好きな尾崎豊の歌に励まされ、夢であるプロのクリエイターを目指すことにしました。
何度も挫けそうになりましたが、尾崎豊の歌を聞きながら自分を励ましています。
今も尾崎豊の歌のおかげで、夢を諦めずにCGアニメの製作を続けられています。
とりあえず、以下の動画を見てください。一生懸命作ったもので、自分では既にプロレベルの傑作だと思ってます。
できればみなさんのご意見、ご感想を聞きたいです。
新しいラダニアムの翼(new wing of radaniam part T) .mp4
http://www.youtube.com/watch?v=PRPJ69rVgbE

題名”ラダニアムの翼その1(A wing of radaniam_partT).mp4”
http://www.youtube.com/watch?v=WTde4RdA5LU
私の世界観の全てを凝縮した力作です。hekenekoワールドをご堪能あれ。
0821nobodyさん2012/03/15(木) 12:59:31.83ID:???
Yiiって、oauth2のモジュールなくね?皆どうしてんの?
0822nobodyさん2012/03/15(木) 19:23:03.36ID:???
デフォルトではHAS_MANYやMANY_MANYを一度にsaveしてくれる機能はないの?

調べたんだけど、いまいち分からなかった;
サンプルコードも、バリデーションやトランザクションを考慮してなかったり・・・
0823nobodyさん2012/03/15(木) 20:37:46.80ID:???
自分でoauthモジュール作った
■ このスレッドは過去ログ倉庫に格納されています