のくす牧場
コンテンツ
牧場内検索
カウンタ
総計:127,062,898人
昨日:no data人
今日:
最近の注目
人気の最安値情報

    元スレ【PHP】Yii Framework

    php覧 / PC版 /
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。
    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitter

    601 = :

    何得意げになって書いてんの?www

    602 = :

    >>599
    >>587を見てもらえればわかるようにスペルミスではないはずです。
    とりあえずさくらインターネットのスレに行ってみます。
    あっちでもスレ違いだって言われそうだけど・・・
    ありがとうございました

    603 = :

    スレ伸びてるとおもったら、またお前ら喧嘩か・・・。
    さくらスタンダードなら>>587の.htaccessの設定でエラーは出ないはず。
    >>587のYiiの設定が原因くさいと思うぜ。
    >>587が悪いのは、素のYiiをインストールしてデフォルトのloginあたりのurlでも
    internal server errorが出るかどうか
    (http://something.sakura.ne.jp/example.com/site/login)
    を確かめもしないで、自分が「作った」アプリであれこれパニクってる点。

    604 = :

    あ、あと、Yiiのバージョンも書いてない点だな。
    Yiiスレでエラー切り分けを問いたいなら、そういうところをちゃんと書くべし。

    605 = :

    >>603
    助言のとおり
    http://example.sakura.ne.jp/exmple.com/site/login
    で見ると正しく表示されました。
    原因はドメインでアクセスするときにあるようです。
    http://example.com/site/login
    このURLでアクセスするとInternal Server Errorになるので。
    ドメインでアクセスするときに、htaccessがどう動くかもっと調べてみます。

    Yiiが原因ではなさそうなので、退散します!
    スレ汚し失礼しました!

    606 = :

    別ドメインを建てていて
    /home/ユーザ名/www/example.com
    が別ドメインのdocルートだっていう情報を提供せずにいたのが痛いわけだが、
    それはともかく、
    http://example.com/site/loginでのそのInternal Server Errorは、単純に
    .htaccessの
    Rewritebaseが
    /example.com
    になっているからに過ぎないと思うね。
    Rewritebaseは/(URLパスルート)じゃなきゃいけないでしょ。そういう場合は。
    まあスレ汚しにスレ違いのレスをするのもなんだけどさ。

    607 = :

    >>606
    イケタアアアアアアアアアア
    ンギモヂイィッィ

    608 = :

    いきなり豹変すんなやwワロタ

    609 = :

    user-moduleを利用する際等、moduleに手を加える際に
    皆さんは直接ファイルを編集していますか?

    それとも別moduleを作成してuser-moduleをオーバーライド
    してますか?

    610 = :

    user-moduleってなに?。意味が不正確でとれないよ。

    611 = :

    >>610
    言葉足りなくてすみません
    yii-userというuser管理moduleのことでした
    http://www.yiiframework.com/extension/yii-user/

    612 = :

    当然、extends。
    出来合のクラスを直接書き換えるというのは愚。

    613 = :

    >>611
    このextentionって便利なの?
    前導入したけど良さがわからなかったな

    615 = :

    >>612
    やっぱそうなんですか
    経験があまり無いので色々試してみようかと思います

    別moduleを作成してyii-userをextends

    >>613
    ユーザの管理画面がすぐ完成するのが便利かと
    プロフィール編集とか

    616 :

    >>582
    http://symfony.com/doc/2.0/book/http_cache.html
    symfony詳しくないけど、ここら辺の機能はないな

    617 = :

    うーん、moduleの全てをextendsするのは
    難しいものですね

    module内でextendsしたmodule名が呼ばれていたり
    結局moduleを直に書き換えているのとあまり変わらないような

    この辺のノウハウというかヒントになりそうな情報があったら
    教えて頂けるとありがたいです

    618 = :

    >>617
    困った部分を、もう少し具体的に教えてもらえます?

    619 = :

    >>618
    yii-user moduleを利用してます。
    modules/user/UserModule.phpをYii::importしてから、modules/user/UserextModule.phpで
    extendsしました。

    これだとURLでindex.php?r=userext/profileを開くとmodelでエラーが出ます。
    Yii::app()->getModule('user')->tableUsersのobjectが存在しないということらしいのです。

    Yii::app()->getModule('userext')->tableUsersと書き換えれば通りますが、
    結局元のmodelを書き換えてしまうことになります。

    何かやり方がマズいようでしたら、こうした場合の良い方法があればヒントを頂きたく。

    620 = :

    protected/config/main.phpで
    'modules' => array('user' => array('id' => 'userext'...ではダメですか?

    621 = :

    コアでないmoduleを元ファイルと別にわざわざextendするメリットが思い浮かばない。
    自分の使いやすいように、moduleファイルを普通に修正すればよいと思う。俺はそうしてる。

    622 = :

    経験談ですが、ターゲットが日本人向けのサイトなら
    yii-userの特定のクラスをextendsしようが
    ファイルの中身を直接修正しようが、リスクはかなり大きいと思いますよ?

    あと、ファイルの中身を直接修正するということは
    yii-userがバージョンアップしても
    それを使えない、もしくはextendsするより修正のリスクが大幅に上がることを考慮しないといけませんよ

    623 = :

    使い捨て、あるいはコードを貰ってその後は独自モジュールとして
    自分が育てるという>>621な人も、>>612,>>622の考え方に立った上で
    独自拡張していると考えたい。

    とはいえ、結構ハードコーディングがあったりして>>617のように
    >結局moduleを直に書き換えているのとあまり変わらないような
    ということがあるのもわかる。

    というわけで俺的方針。

    (1)extends基本。
    (2)「moduleを直に書き換え」と同じ手間っぽくて、かつ2,3の修正で済むなら
    直接書き換えて、diffの履歴をとっておく。
    (3)出力系の修正なら、置換用のラッパー作ってそれで対応。
    (4)かなり変更が必要で、それでもそのモジュールを使い切りたい(バージョンアップにも
    対応したい)場合=>(a)対象モジュールのクラス名称を全部かえて(シェルスクリプトを書く)
    その後(b)自分の拡張モジュールでその対象モジュールクラス名を使う。

    (4)で対応が出来ないようなら、使うのやめる。そこまで拡張が難しいなら今後も悩まされるはず。

    ところで、>>609さん。>>619のケースなら、>>620さんの指摘でいけるんじゃないだろうか。
    loadUserメソッドがわざわざモデルの変更を想定しているんだから。

    624 = :

    >>620
    試してみましたが、挙動が変わらなかったです。
    元々yii-userが考慮していないpropertyなのかもしれません。

    色々方法やサンプルを探してみましたが、
    moduleのextendsに関するものはなかなか出てこないです。

    Yiiで制作されているオープンソースソフトウェアで
    modulesのextendsしているものがあるか探してみようと思います。

    無ければ、
    >>623のdiffで取るやり方が正道なのかもしれませんね。
    yii-userはバージョンアップの頻繁なmoduleのため、
    直接編集すると大変そうですが。

    >>622
    >yii-userの特定のクラスをextendsしようが
    >ファイルの中身を直接修正しようが、リスクはかなり大きいと思いますよ?

    これはそもそもyii-userが日本向けサイトに向いてない作りという意味ですか?

    625 = :

    >>624
    class ProfileController extends Controller
    public function loadUser()
    {
    if($this->_model===null)
    {
    if(Yii::app()->user->id)
    $this->_model=Yii::app()->controller->module->user();

    なんだから考慮してると思うんだけど。

    628 = :

    >>627
    あんた誰よ

    629 = :

    >>628
    通りすがりのものです

    630 = :

    www

    631 = :

    CListViewが勝手にjqueryとjquery BBQ(?)を<head>に書きこんでくれるんだけど、
    これをやめさせる方法ない?
    今は無理矢理extendsして、
    public function registerClientScript() {}
    と空のfunctionをoverrideした

    632 = :

    >>625
    確認の仕方が悪かったです。ありがとうございます。
    idでmodule名を切り替え出来ました。

    しかしmodelsやviewsを拡張していくことを考えるとやはり
    moduleは直接編集していくのが本道なのかもという気がしてきました。

    それを考えるとyii-userのprofilesの項目追加の仕組みがややこしいのも
    CMSを提供するのと同時に、ソースを触らせない前提という意図もあるのかなと。

    634 = :

    >>631
    CBaseListViewをextendsして独自に作っていく方法のほうがより好みのwidgetを作れます
    jqueryとbbqをheadに貼り付けたくないだけなら、ここらへんを抜いたもんを上書きすればOK。まさにやってそうですけど

    $cs=Yii::app()->getClientScript();
    $cs->registerCoreScript('jquery');
    $cs->registerCoreScript('bbq');
    $cs->registerScriptFile($this->baseScriptUrl.'/jquery.yiilistview.js',CClientScript::POS_END);
    $cs->registerScript(__CLASS__.'#'.$id,"jQuery('#$id').yiiListView($options);");

    >>632
    yii-userがどういうものを扱っているモジュールなのか考えれば
    基本的な設定はconfig/main.phpで上書きするようにして
    他は直接編集していく形をとるのがベストだと思います
    あと、ビューはif文などに気を使いながら、直接編集していくものです。拡張もくそもない
    でも前に言いましたが、yii-userは編集するリスクがかなりあるので、1から自分で作るほうが賢いやり方のように思います

    635 = :

    http://www.a-side.com

    636 :

    ちょっと前ここで話題になってたデータベースマイグレーションの有用性をずっと考えてたけど、
    以下のような話に対応出来るという利点が一番大きいのかな
    たしかにソースでデータベースの構造も構成管理出来るというのは納得できる利点なのかも

    >ソースコードについて昔の状況が呼び出せてたとしても、それに依存するデータベースの状況も再現できなければまったく意味がないのです。
    >これを実現するためには、従来はDDLを記述したファイルを直接コミットして管理するしかありませんでした。
    http://www.atmarkit.co.jp/fdb/single/08s_jiemamy/jiemamy1.html

    637 = :

    >>636
    うん。おもしろい記事でした。ありがとう。

    638 = :

    Yiiのマニュアル、Cookieのことについて書かれてないんだな
    Wikiでまとめられてたけど
    Cookieってそんな重要とされてないのかね

    639 = :

    需要あると思うけど、なぜかないよね
    俺もガイドがないから、仕方なくソースから勉強した

    640 = :

    $form=$this->beginWidget('CActiveForm');
    echo $form->textField($model,'name',array('size'=>50,'maxlength'=>50,'value'=>"デフォルト値"));

    上記のようにデフォルトの値を設定すると、
    送信後エラーが起きてフォームに戻ってきた場合、
    上書きしたデフォルト値が元に戻ってしまいます

    上書きした値を使いたい場合どうしたらいいですか?

    641 = :

    >>640
    ビューに直接PHPコードを書く方法
    http://www.yiiframework.com/forum/index.php?/topic/16737-form-input-default-value-overrides-model-value/

    モデルをnewしたときにデフォルト値を入れておく方法
    http://www.yiiframework.com/forum/index.php?/topic/11960-preferred-way-to-set-dynamic-default-values-in-a-cactiverecord-model/page__view__findpost__p__58656

    ここらへんが参考になるんじゃないでしょうか

    642 = 636 :

    あ、あとちょっと前に話題になってたARの利点だけど、>>636のページのリンク先に以下のように記載があって、
    まんまARの利点として言えるんじゃないかと思うんだがどうだろう
    ※記事の内容はARとは直接的に関係ない

    http://objectclub.jp/community/XP-jp/xp_relate/evodb-jp
    >データベースアクセスコードを明確に分離する
    >データベースリファクタリングの影響を把握するためには、データベースがアプリケーションによってどのように使われているかを調べることが可能でなければならない。
    >SQLがコード達の中に乱雑に散らばっているならば、調査は非常に困難になる。
    >つまり、データベースがどこでどのように使用されているかを明らかにするために、明確なデータベースアクセス層を設けることが重要になる。
    >データベースアクセス層を設ける際にはPofEAAの中からデータソースアーキテクチャパターンのどれかに従うことを勧める。

    ちなみに上記で言及されているPofEAAにもARが紹介されている
    http://capsctrl.que.jp/kdmsnr/wiki/PofEAA/?ActiveRecord

    業務系開発の中では意外と歴史があるらしく、ここら辺の書籍を読むことで経緯なんかも深く知ることが出来るのかもね

    645 = :

    $criteria->with = array('category2'=>array(
    'select'=>'SUM(price) as price',
    'group'=>'category1_id'
    ));

    これでいけたりするんかいな?

    646 = :

    見た感じ無理そうですけどwどうなんでしょう?
    findAllBySql()で良いんじゃないですか?

    647 = :

    >>643
    そもそもSQL自体こうだろ。

    SELECT c1.id, max(c2.name), sum(c2.price)
    FROM category1 c1
    LEFT JOIN category2 c2 ON c1.id=c2.category1_id
    GROUP BY c1.id

    SQLよく知らないのにAR使うのは百害あって一利なしだからやめといた方がいい。

    648 = :

    >>647
    category2を外部結合してるから、c2.priceがnullだと、sum(c2.price)もnullになっちゃうよ?

    649 = :

    >>647
    SQLよく知らないからARを使うんじゃん
    あとテストくらいするでしょ?

    650 = :

    >>648
    だったらふつーは
    sum(NullToZero(c2.price))
    みたいにするよね。どう考えてもああはならん。

    >>649
    その認識はマジで改めた方がいい。


    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / php一覧へ
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。

    類似してるかもしれないスレッド


    トップメニューへ / →のくす牧場書庫について