【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/
0669nobodyさん
2012/02/12(日) 20:59:01.29ID:9VDZvfC5思い切って注文しました。辞書を片手に頑張ります
0670nobodyさん
2012/02/12(日) 23:28:33.50ID:???0671nobodyさん
2012/02/13(月) 00:06:36.07ID:???0672nobodyさん
2012/02/13(月) 01:03:04.20ID:???0673nobodyさん
2012/02/13(月) 01:32:52.23ID:???0674nobodyさん
2012/02/13(月) 01:37:37.52ID:???0675nobodyさん
2012/02/13(月) 02:13:55.51ID:???ガイド、チュートリアルの順にやりました
書き方が悪くて混乱させてしまったようで申し訳ないです
今はyii for beginnerという記事を読んでいますが
他に基礎がまとまってるページなりサイトなりあれば教えて頂きたいです
0676nobodyさん
2012/02/13(月) 03:35:40.24ID:???セットアップがちょっと難しかったけど、メールのテンプレート機能で携帯用と使い分けられるのが良い
0677nobodyさん
2012/02/13(月) 18:09:25.18ID:???0678nobodyさん
2012/02/14(火) 00:44:08.18ID:CHG2KmQT今度は早かったな
0679nobodyさん
2012/02/14(火) 01:05:36.74ID:CHG2KmQThttp://www.yiiframework.com/doc/guide/1.1/ja/topics.url#sec-9
翻訳も早くて感謝です
0680nobodyさん
2012/02/14(火) 02:33:19.28ID:???これってBlogとかでよくある、
ブログタイトルをURLに含めるようなものが簡単に
出来るということだよね?
0682nobodyさん
2012/02/14(火) 09:45:04.56ID:???二つ以上のパラメータをURLに仕込んでDBに問い合わせてその結果次第で任意のページを返せるしさ
まぁ普通はコントローラ側でこう言う事をやるわけだけどね
0683nobodyさん
2012/02/14(火) 09:53:20.39ID:???SEO対策ってやつ?
0684nobodyさん
2012/02/14(火) 15:54:04.76ID:???'articles/<title:.+>'=>'article/view',
みたいな感じで設定して、コントローラではtitleの文字列からモデルを検索して引くことができた
>>679の方法を使うと、コントローラの処理部分をルールクラスとしてまとめることが出来て、構造が直感的だし便利じゃね
カスタムURLを使わない人には関係ないと思うが
ちなみに俺は、タイトルみたいなのをユニークにするのは嫌なので、
'articles/<title:.+>/<id:\d+>'=>'article/view',
みたいにして、タイトルはあってもなくても良いようにしてる
0685nobodyさん
2012/02/14(火) 18:44:41.95ID:???0686nobodyさん
2012/02/14(火) 22:23:25.54ID:???0687nobodyさん
2012/02/14(火) 22:46:01.30ID:???まあ個人的にはコントローラ/メソッド/idみたいなのとかを殆どURLに使わないので、
結局>>684氏みたいにルールを書いちゃう。
0688nobodyさん
2012/02/15(水) 05:53:55.96ID:jJ6oNY1vJavaScriptが埋め込まれてるページにアクセスした場合、jsファイルのリクエストはしちゃうのかな?
携帯サイトでListView使おうとしたんだけど、勝手にjqueryがregisterされちゃって、抑止も出来ない作りになってることが分かった
もしrequestされちゃうなら、CClientScriptを継承したクラスでrenderの最後でスクリプトの配列をクリアしちゃおうかなって考えてるんだけど…
あんまりYii関係なくてごめん
0689nobodyさん
2012/02/15(水) 12:17:35.98ID:???Yii Frameworkは習得出来ますか?
cakePHPから入ろうと思って
色々調べてるうちにYiiの方が良いように感じました。
もったいないことにcake参考書2つも買っちゃった;;
0690nobodyさん
2012/02/15(水) 12:58:09.44ID:???Cakeで不便に思うところがなければ捨てるのもったいないし
Cakeで不便に思うところがあっても、Yiiで解消されてないなら乗り換える意味ないよ。
0691nobodyさん
2012/02/15(水) 14:13:55.27ID:???Yii Framework以外に他のフレームワークを使ったことがないので、Yiiの方が良いかはわかりませんが、
小規模なECサイトを作り上げることができましたので、習得自体は難しくないと思います
学習しながら作っていったのですが、ノンフレームワークでやるより全然簡単にできました
個人的に習得が簡単だと思った理由としては、
・Extensionが豊富
・構造がシンプルかつ、拡張が簡単にできるようになっている
・フレームワークのソースが読みやすい
・ガイドが豊富で、日本語で整備されている(APIリファレンスは英語)
・JavaScriptとJQueryをあんまり知らなくてもAjaxが使えてしまう(JQueryはちょっと勉強した方が更にいろいろ出来るようになりました)
・Giiという仕組みがあるので、コードの土台をDBに合わせて自動で生成してくれる
※もちろんこれらは相対的な評価ではないことに注意して下さい
特に、ガイドを読めば土台のおまじない的なコードの意味(触り方)が分かるのは嬉しかったです(rules, relations, filters, etc...)
しかし、困ったことがあったらフォーラムなどを検索する必要があった場合も多かったので、若干の英語力は必要です
0692nobodyさん
2012/02/15(水) 14:43:59.89ID:???>>690
今までライブラリとかは使ったりするのですが
ほぼフルスクラッチで書いてばっかりでMVCフレームワーク
を使ったこと無いんですよ・・・
ただ参考書買っちゃったので、機会があればやろうとは思うのですが・・・
>>691
ありがとうございます
学習するならどれがいいのかな?って色々サイト見ていたら
yiiが目に留まったんです。
多少の英語力はあると思うので挑戦してみます。
>>690さん>>691さん
ありがとう!
0693nobodyさん
2012/02/15(水) 15:33:52.13ID:???Yiiの方がYii
理由は速さ、思想が優れていること
0694nobodyさん
2012/02/15(水) 16:17:53.50ID:???0695nobodyさん
2012/02/15(水) 20:23:43.02ID:???0696nobodyさん
2012/02/16(木) 00:39:02.08ID:???ここらへん参考になるかもです
http://www.yiiframework.com/forum/index.php/topic/16515-scriptmap-wont-work-when-debug-mode-is-off/page__p__81923__hl__+criptMap#entry81923
あとはCListViewを拡張して
registerClientScript()をうまくオーバーライドして使えば良いんじゃないですか?
0697nobodyさん
2012/02/16(木) 06:20:41.52ID:hznOBTcJおお、ありがとう
とりあえずサイズの大きいjquery.jsだけはscriptMapに設定して無効化しようと思う
ところで、Yii::app()->cache->get($id)って、キャッシュがhitした場合でも、
DependentDataが変更されている場合はfalseを返却するんだな
通常get()でfalseが帰ってきたらデータを作りなおしてset()するような処理にしてると思うけど、
その時ちゃんとdelete()してあげないとメモリ上に使われないゴミデータが残ることになってしまうことに気がついた
ということで、こんな感じにするといいと思う
$value = Yii::app()->cache->get($id);
if ($value === false) {
Yii::app()->cache->delete($id);
$value = new Data();
Yii::app()->cache->set($id, $value, $expire, $dependency);
}
expireが短かったり、dependencyを使ってないなら別に問題はないけど
0698nobodyさん
2012/02/16(木) 21:59:40.81ID:???falseの場合jquery.min.jsを呼び出すので、そこらへん注意してくだいね
0699nobodyさん
2012/02/17(金) 00:10:51.42ID:???0700nobodyさん
2012/02/17(金) 15:06:04.29ID:???0701nobodyさん
2012/02/17(金) 16:37:22.68ID:???検索で複雑なsqlが必要なんでARつかうよりDAOの方が便利そうだと思ったから。
パラメータ数も上限するから :id とかでバインドするのが面倒だった。
結局、自己解決して
普通にpdoと同じやり方で出来ました。
0702nobodyさん
2012/02/18(土) 21:54:07.39ID:???0703nobodyさん
2012/02/18(土) 23:01:01.44ID:???HABTMもうまいこと自動でやってくれたら文句ない
0704nobodyさん
2012/02/19(日) 00:30:45.02ID:???英語でも構いません。
0705nobodyさん
2012/02/19(日) 00:54:03.26ID:???0706nobodyさん
2012/02/19(日) 01:00:00.17ID:???ウィジェットを使って表示しているのを見てポカーンです。
ウィジェットの使い方を知りたいです。
0707nobodyさん
2012/02/19(日) 01:36:57.26ID:???ちなみにCListViewならこれ見ればわかる
http://www.yiiframework.com/doc/api/1.1/CListView/
0708nobodyさん
2012/02/19(日) 01:40:53.67ID:kzCubFZM0709nobodyさん
2012/02/19(日) 05:06:59.32ID:???0710nobodyさん
2012/02/19(日) 10:33:48.34ID:Np7bOdr0CListViewです、ありがとうございます!
0711nobodyさん
2012/02/19(日) 10:55:43.37ID:???0712nobodyさん
2012/02/19(日) 13:36:38.54ID:Np7bOdr0自分で書いてる
0713nobodyさん
2012/02/19(日) 13:40:38.98ID:Np7bOdr0YKかwwwwww
聞いてくれていいんだけど遠慮してる?
0714nobodyさん
2012/02/19(日) 13:52:40.38ID:kzCubFZM0715nobodyさん
2012/02/19(日) 14:36:30.21ID:???意図が全く見えない
0716nobodyさん
2012/02/19(日) 14:40:19.96ID:???0718nobodyさん
2012/02/19(日) 14:58:56.30ID:???同じ社内かよwwwwwwwwww
先輩が>>712書く
↓
先輩、ID同じで>>710が社内の後輩だと気づく
↓
先輩>>713書く
0719nobodyさん
2012/02/19(日) 14:59:40.62ID:???0720nobodyさん
2012/02/19(日) 15:07:02.65ID:???0721nobodyさん
2012/02/19(日) 17:03:57.36ID:???もともとYiiにはなかったんだけど
これはいいねってなってあとからコアに組み込むことになったんだそうですよ
どうでもいい話ですがw
0722nobodyさん
2012/02/19(日) 18:27:35.51ID:???方法を教えてくださいにゃん
0723nobodyさん
2012/02/19(日) 19:13:08.00ID:???0725nobodyさん
2012/02/19(日) 20:23:12.13ID:???state作成いたら成功した!
>>724
新しいscenario選択したらデフォルトのvalidateは利用されない仕組みなのかな
ちょっと試してみる!
二人ありがとYii
0726nobodyさん
2012/02/19(日) 21:01:16.48ID:???ただ、俺はvalidateの切り分け以外にscenarioを使うのはおすすめしないな
なんか前にもこんな話したよね
0727nobodyさん
2012/02/19(日) 23:31:59.69ID:???モデルでYii::app()->controller->action->idを使ってさ
あとはプロパティがempty時はこうする、とかさ。いろいろあるさ〜
0728nobodyさん
2012/02/19(日) 23:36:20.48ID:???0729nobodyさん
2012/02/19(日) 23:39:31.37ID:???0730nobodyさん
2012/02/20(月) 01:14:34.72ID:???modelのclass変数を作成して
それをsave()前に$model->state=falseとかした感じ
beforeSave()の中で$this->stateでifして処理振り分け
0732nobodyさん
2012/02/20(月) 03:43:08.62ID:b6WVXuP+あとから見た時、分かり難いから
scenarioはruleを切り分けるという目的で追加されているのに、
他の目的で使うと、後で見た時になんだこれってなっちゃう危険がある
>>727の方法もいいね、っていうか前の話でも出てたなw
0733nobodyさん
2012/02/20(月) 06:00:09.92ID:???stateプロパティをモデルにもたせるのが良い方法かな
0734nobodyさん
2012/02/20(月) 19:00:30.74ID:???例えばbeforeSave()で分岐したいがためにrulesにscenarioを設定するのは違うけど
結果、$this->scenario !== 'insert'みたいのを利用できるのであれば、それはそれで使ってもかまわないってことだよね?
0735nobodyさん
2012/02/20(月) 20:29:22.19ID:b6WVXuP+それもinsert以外のscenarioの意味(効果)を変えちゃうから、俺は原則、使わないようにしてるよ
でも利用した方がベターなケースもあるかもしれないし、beforeSave()を利用したくない理由が分からないのに、
scenarioを使うのはおすすめしないって言ったのは適切ではなかったかも
単に、自分ルールとしてscenarioはvalidate ruleを切り分けるためだけに使ってる、って言うべきだったかな
結局は環境(体制、設計、規模など)によって、自然で分かりやすい実装ってのも変わってきちゃうよね
0736nobodyさん
2012/02/20(月) 21:36:24.53ID:???初めて知ったわ
0737nobodyさん
2012/02/20(月) 22:16:12.46ID:???$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:???layoutのmain.phpとかでは使うようにしてたんだけど、
他のviewでは結局サイト名を手打ちしてしまう。
0742nobodyさん
2012/02/21(火) 22:14:58.43ID:???0744nobodyさん
2012/02/22(水) 00:24:57.94ID:FnoANuGBってことじゃね
0745nobodyさん
2012/02/23(木) 05:54:50.59ID:???モデルのrulesで設定してるんだけどここでいいのかな
ってかrulesのdefaultはどのタイミングで設定されるん?
1回目バリデーション失敗して、次送信したときまた新たに設定される?
0747nobodyさん
2012/02/23(木) 09:11:29.65ID:???0748nobodyさん
2012/02/23(木) 12:03:11.26ID:???俺はこれを使ってる。
0749nobodyさん
2012/02/23(木) 15:12:02.57ID:???http://www.yiiframework.com/doc/api/1.1/CTimestampBehavior
0750745
2012/02/23(木) 15:20:41.42ID:???一応うまくいってるけど
あと、ユーザー登録のアクティベートキーの生成&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:???これ、cakeでは'callback' => falseみたいのありましたよね?ほしいですねyiiにも
0754nobodyさん
2012/02/23(木) 22:28:10.74ID:???0755nobodyさん
2012/02/26(日) 12:56:19.56ID:???そういうファイルはどのフォルダに入れるのが普通なんでしょうか?
0756nobodyさん
2012/02/26(日) 15:20:43.51ID:???エラーが出るのですがfopen()はそもそも使えないのでしょうか
0757nobodyさん
2012/02/26(日) 17:49:48.25ID:???なら何も問題ないんですよね。
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/
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:???>現在のカレントディレクトリがどこかを確認しれ。
どうしてこれをやらなかったのかorz
file(getcwd().'/test/test.txt');
であっさり解決しました。人に聞く前に確認しろとorz
完全にあまえでした、すみません。
ファイルの配置のお話も勉強になりました。
見られておkなのでルート直下にディレクトリつくって放り込みました。
>そのエラーの内容からちった判断しれw
恥ずかしいですほんとにorz
「そんなファイルないよ」ってエラーでした。
あーだこーだやってたのが解決してとてもすっきりしました。
親切に教えていただいて、本当にありがとうございました。
0762nobodyさん
2012/02/26(日) 21:35:39.39ID:???あと、これをこうしたら、すごく便利になったとか
0763nobodyさん
2012/02/29(水) 11:54:14.13ID:???このスレの住民は初心者に対して高圧的な奴が多いから
0764nobodyさん
2012/02/29(水) 14:41:37.99ID:???0765nobodyさん
2012/02/29(水) 17:23:22.19ID:???0766nobodyさん
2012/02/29(水) 23:42:39.00ID:Ha59kcRM個人的にはそういう奴を見つけたらソフトに排除するようにしてるんだけどね
そもそも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:???なんでだろう。
■ このスレッドは過去ログ倉庫に格納されています