トップページ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/
0391nobodyさん2011/12/27(火) 01:17:16.70ID:aNrDGmfk
英語の出来ないヤツが
一緒に仕事してると
変な変数名や関数名を付けるので迷惑だな。

頑張ってなんちゃって英語化してるみたいだが
文法がめちゃくちゃ。
0392nobodyさん2011/12/27(火) 01:24:51.39ID:???
ネットで調べれば英語書けるじゃん
0393nobodyさん2011/12/27(火) 09:56:27.62ID:???
モデルTest.phpの変数$strをコントローラから表示させたいのですが
Internal Server Error
include(Test.php) [<a href='function.include'>function.include</a>]: failed to open stream: No such file or directory
というエラーがでてしまいます
demoのファイルの中を見ながらここまでは書けたのですがmodelの読み込みがわかりません
コントローラ内からモデルを読み込んで$strの値を表示させたいのですがアドバイスお願いします
■protected/controllers/TestController.php
class TestController extends CController
{
public function actionIndex()
{
$test = new Test();
echo $test->str;
}

}
■protected/models/Test.php
<?php

class Test extends CActiveRecord
{
public $str = "サンプルテキスト";

public static function model($className=__CLASS__)
{
return parent::model($className);
}
}
0394nobodyさん2011/12/27(火) 10:19:16.88ID:???
こっちではエラー出なかった
ファイルがないってエラーだし、環境問題じゃないのか?
echoの1行コメントアウトしてもエラー出るんじゃねえの
03953952011/12/27(火) 10:38:37.00ID:???
原因わかりません
すいませんファイルあげたのでみてもらえませんか?
http://www1.axfc.net/uploader/Sc/so/304365.zip
コードはframeworkフォルダがトップのindex.phpと同じ位置にあるものとして書いてます
03963952011/12/27(火) 14:20:13.96ID:???
複数のレンタルサーバとかでうpしても同じエラーだったので環境の問題ではなさそうです
ここでつまずくと後々キツイのでやっぱYiiは選択肢からはずします
0397nobodyさん2011/12/27(火) 15:07:17.51ID:???
モデルのプロパティをコントローラでechoしたいだけなら
CActiveRecordではなく、CFormModelを継承してみてください

CActiveRecordとCFormModelの違いについてはここらが参考になるかもしれません
http://www.yiiframework.com/doc/guide/1.1/ja/basics.model
http://www.yiiframework.com/doc/guide/1.1/ja/form.model

protected/config/main.phpにてデータベースをしっかり設定していて
かつ、データベースにtestというテーブルがあって
データの取得、追加、更新、削除などを行う場合は、CActiveRecordを継承してみてください
その場合はtableNameメソッドにて、テーブル名を記述する必要があります

アクティブレコードに関しては以下が参考になりますよ
http://www.yiiframework.com/doc/guide/1.1/ja/database.ar
03983952011/12/27(火) 15:14:06.09ID:???
>>397
師匠がいうなら・・・俺また粘って見ます
0399nobodyさん2011/12/27(火) 15:18:26.04ID:???
tableNameメソッドはCActiveRecordクラスではget_class($this)とやっているので
モデルクラスとデーブル名が一致しない場合のみで、いいかもしれないですね。失礼しました。
04003952011/12/27(火) 16:30:18.42ID:???
おかげさまで出来ました
ただパスを修正したらエラーになるのが原因がよくわかりません
サーバを再起動するとエラーが消えます
Yiiに必要なapcやmemcacheの影響でこうなるのでしょうかね
よくわかりませんがこのへんを気をつけて学びたいと思います
0401nobodyさん2011/12/27(火) 16:42:02.52ID:???
PATHってphp.iniとかで設定してあんのかね?
0402nobodyさん2011/12/27(火) 16:43:28.83ID:???
パスを修正したらエラーになるってのは、具体的にどういうことですか?
あとyiiはapcなどが必須ではなく、「利用できる」だけですので、使わなくても特に問題ありません
04033952011/12/27(火) 16:50:11.11ID:???
昨日からYiiをはじめたばかりでドキュメントを読み飛ばしてるかもしれませんがphp.iniのパスというのは何かしないとだめですか?
たとえばframeworkとprotectedはドキュメントルートに置きたくないので
以下のようにパス修正・ファイルの移動してるんですがこの後にエラーがでます。
サーバを再起動すると直ったり直らなかったりします。
直らないときは1から同じものを作ったら直ります
エラーが出たら、エラーが出る直前でecho 1;exit;してブラウザで閲覧後にこのコードを消すと別のエラーが発生したりと原因も良く分からないです
/aaa/bbb/framework
/aaa/bbb/protected
/aaa/bbb/protected/config/main.php

■エントリスクリプト
require_once(dirname(__FILE__).'/../framework/yii.php');
$configFile = dirname(__FILE__).'/../protected/config/main.php';
Yii::createWebApplication($configFile)->run();

■config/main.php
<?php
return array(
'basePath' => '/aaa/bbb/protected',
);
0404nobodyさん2011/12/27(火) 18:53:48.00ID:???
まぁこのあたりでこけるなら、ぶっちゃけなに使おうが難しい気はするな
相対で指定したファイルパスがうまく引けない原因がわからない、とかって
別にyiiだから起きてる問題ってわけじゃないしなぁ

エラーをはいた処理が読もうとしたパス文字列と、実際に参照したい対象のフルパス
両方を取得して比較してみりゃいいだけの話だと思うけれど
それに問題がなければ権限じゃね
04053952011/12/27(火) 19:15:18.13ID:???
linuxサーバでlolipopとさくらの鯖と自宅のWindowsで同じ症状なので権限の問題ではないと思います
相対パスは合ってますしパスが絶対パスでも症状は同じになります
はやり日本語情報が少ないので日本で流行ってない状況での初心者の使用は控えるべきかもしれませんね
0406nobodyさん2011/12/27(火) 19:19:07.53ID:???
そうだね
使える人だけが使って楽出来ればいいのさ
0407nobodyさん2011/12/27(火) 19:42:24.58ID:???
config/main.phpのbasePathの値ですが
'basePath' => dirname(__FILE__).DIRECTORY_SEPARATOR.'..',
で良い気がしますが、どうですか?一応これはデフォルトの値です

あと、Yiiを触りたてなら
まずドキュメントルートにframework, protectedを設置して
一つずつ、置き場所を変えるなり、設定を変えるなりして、やっていったほうがいいかもしれないですね
順々にやっていくと、どこでエラーが出るのか把握できますし
0408nobodyさん2011/12/28(水) 16:42:40.02ID:???
modelのファイル名が違うんじゃないの?
大文字小文字が間違ってるとかさ
0409nobodyさん2011/12/28(水) 18:24:47.59ID:???
初心者ってまじ初心者なんだな
0410nobodyさん2011/12/28(水) 18:44:54.92ID:???
出たこういう人を見下す奴
0411nobodyさん2011/12/28(水) 19:34:38.42ID:???
まぁ盛り下がってるし良いんじゃない?
答えたい人が答えるだけだし
0412nobodyさん2011/12/28(水) 20:03:03.42ID:???
初心者を見下したり、自分が地球の中心にいると思ってる奴なんてどこにでもいるさ
0413nobodyさん2011/12/28(水) 20:18:35.44ID:???
>>411
ものすごくスレ違いだけど盛り下がるって言葉使う奴ってゆとりか韓国人だな
0414nobodyさん2011/12/28(水) 23:27:49.82ID:???
>>411じゃないけど、俺韓国人かも・・・
0415nobodyさん2011/12/28(水) 23:54:45.28ID:???
韓流ブームだしモテて丁度良いんじゃねぇかな?
0416nobodyさん2011/12/29(木) 00:08:59.59ID:???
yii関連以外の話は控えてください。初心者より程度が低く見えるので。
0417nobodyさん2011/12/29(木) 10:37:55.51ID:???
controllerの$this->render("テンプレート名",array("title"=>"ページタイトル"));
としたときに
views/layouts/main.php内に<?php echo $title;?>と書いても表示できなくて
views/site/index.php内に<?php echo $title;?>と書いたら表示できました
layoutsないのテンプレートに表示させるにはどのように書くのでしょうか?
0418nobodyさん2011/12/29(木) 13:18:16.60ID:???
>>403
Yiiは本職じゃない俺が回答するのもなんだけど。
その症状から分かることはキャッシュの影響だよ。
鯖を再起動して直るのはそういう事。
もしくはclearstatcacheを使うか。

何でこうも他人を煽ることしかできない中途半端な知識を持ってる人が多いんだろうねこのスレ。
0419nobodyさん2011/12/29(木) 14:46:38.92ID:???
利用者が増えてきたんでしょ
にしても自分も最後に煽らんでもw
0420nobodyさん2011/12/29(木) 15:12:12.42ID:???
間違って回答することも
間違っていたことを確認できるので、知識の向上になりますよ

>>417
$this->renderPartial()を確認してみてください
http://www.yiiframework.com/doc/api/1.1/CController/#renderPartial-detail
0421nobodyさん2011/12/29(木) 20:59:54.03ID:???
フォーラムで誤情報流してしまった時の惨め感は異常
0422nobodyさん2011/12/29(木) 22:40:57.55ID:???
>>421
大丈夫ですか?
全然そんなことないですよ。むしろどんどん発言していってください

今年中には1,1.9リリースしなさそうですねー
1.2や2.0もどんなものになるのか楽しみです!良いお年を。
0423nobodyさん2011/12/30(金) 00:47:39.93ID:???
お、遂に1.1.9出るのか
0424nobodyさん2011/12/30(金) 14:05:49.06ID:???
CakePHPで作ったサービスをYiiに載せ替えるとしたら、どの程度の手間がかかるだろうか
0425nobodyさん2011/12/30(金) 17:27:38.61ID:???
1から作り直しじゃね
0426nobodyさん2012/01/01(日) 21:08:25.48ID:???
1.1.9きたよ
0427nobodyさん2012/01/01(日) 21:11:26.58ID:iI9nxYID
どうでもいいけど
英語の分からない奴にコードを欠かすな。

変な変数名・関数名を付けてむっちゃくちゃ。
0428nobodyさん2012/01/01(日) 21:13:43.14ID:???
$rinngo = "りんご";
$ichijikangotonijikkousurunaiyou = time();
0429 【大吉】 【1822円】 2012/01/01(日) 21:54:00.74ID:???
せめてキャメルしる('A`)
0430nobodyさん2012/01/02(月) 00:05:34.96ID:???
実際のテンポラリ以外にtempとかhogeとか使ってしまったら負けだと思ってる
あれここなんのスレ?
0431nobodyさん2012/01/02(月) 00:17:33.88ID:???
1.1.9来たのか
それはあけおめの予感・・・!
0432nobodyさん2012/01/02(月) 01:26:16.76ID:EvQxdFqr
>>428
まさにそれに近い感じ。

付け焼刃の英語で日本語を翻訳して並べてる
だけだから無茶苦茶。

スパゲッティーコードの出来る原因は
英語の出来ないカスがコーディングするからだと確認したよ。


恥を知れ。お前とお前。
0433nobodyさん2012/01/02(月) 02:11:26.06ID:???
>>432
それって1.1.9関係ある話?
>>427のコンテクストが分からん
0434nobodyさん2012/01/02(月) 10:30:41.30ID:???
で、次のバージョンは1.2なの?それとも2.0か?どうせリリースに時間かけるならPHP5.4専用にして最新最強のフレームワークにしてほしいわ。
0435nobodyさん2012/01/02(月) 10:30:48.26ID:EvQxdFqr
英語が出来ない癖して
Yiiを使うな。という話さ。
0436nobodyさん2012/01/02(月) 10:47:02.86ID:???
>>434
簡単に言ってるけどPHP5.4を使いこなせるの?
0437nobodyさん2012/01/02(月) 11:09:13.91ID:???
まだ正式板が出てないモノを使いこなすもなにもないだろがw

0438nobodyさん2012/01/02(月) 11:47:15.83ID:EvQxdFqr
車のメカニズムを作れる人は頭が良いですが

鍵を差して運転する事しか出来ない人は馬鹿です。
0439nobodyさん2012/01/02(月) 12:52:13.15ID:???
次は1.2でしょうね
それと平行して2.0を開発している雰囲気
あと2.0はPHP5.3以降になる予定だそうです
1.1.9はリレーション周りの強化が主で、これといった新しい機能はありませんでしたねぇ
0440nobodyさん2012/01/02(月) 13:34:18.36ID:???
そこでまさかの1.1.10ですよ
0441nobodyさん2012/01/02(月) 14:05:39.75ID:???
いや、まさかというか次は1.1.10でしょうね、すみません
0442nobodyさん2012/01/02(月) 15:34:42.08ID:???
http://code.google.com/p/yii/source/diff?spec=svn3528&r=3528&format=side&path=/trunk/UPGRADE
0443nobodyさん2012/01/02(月) 23:01:43.96ID:4fhe3V6D
YiiってRESTfulなWEB APIサーバの開発もサポートしてる?
0444nobodyさん2012/01/02(月) 23:30:16.91ID:???
してる
詳しくはマニュアル
0445nobodyさん2012/01/04(水) 17:50:03.95ID:???
Yiiの関連付け(リレーショナル・アソシエーション)ってどんな感じ?
保存するとき、フォームからの値から関連したDBに自動で格納してくれたりする?
0446nobodyさん2012/01/05(木) 02:09:13.94ID:???
してくれる
詳しくはマニュアル
0447nobodyさん2012/01/05(木) 14:53:06.86ID:???
>>445
これですかね?
http://www.yiiframework.com/wiki/19/how-to-use-a-single-form-to-collect-data-for-two-or-more-models/
0448nobodyさん2012/01/05(木) 14:59:56.07ID:???
>>447
それだと”自動”ってことにはならないね
0449nobodyさん2012/01/05(木) 15:05:44.58ID:???
自動のやり方ってYiiにあります?
0450nobodyさん2012/01/05(木) 15:49:18.16ID:???
自動ってどこまで自動?
他のフレームワークの例はあるの?
0451nobodyさん2012/01/05(木) 15:50:42.39ID:???
下手に自動過ぎると使いづらいから、Yiiのattributesは使いやすくて好きだけどね。
0452nobodyさん2012/01/05(木) 15:57:33.66ID:???
CakePHPだとModel::saveAll()でできたりするんですけど
自分も自動よりYiiのWikiに載ってる感じで、分けて保存するほうが扱いやすいですね
0453nobodyさん2012/01/05(木) 18:50:18.06ID:???
都道府県テーブルにPK:1〜48(北海道〜沖縄・その他含む)まで入っていて、

<select name="Post[prefecture_id]">
 <option value="" selected="">地域名</option>
 <optgroup label="北海道">
  <option value="北海道">北海道</option>
 </optgroup>
 <optgroup label="東北">
  <option value="青森県">青森県</option>
  <option value="青森県">岩手県</option>
  <option value="青森県">宮城県</option>
                 :
                 :

↑こういうdropDownListを返すにはどうしたらいい?

<?php echo $form->dropDownList($model,'prefecture_id',
          CHtml::listData(Prefecture::model()->findAll(), 'id', 'name')); ?>

<optgroup>が無い単純なdropDownListなら上記でいけるんだけど、
これが入ることでどう実装していいか悩んでる
0454nobodyさん2012/01/06(金) 00:10:08.19ID:???
俺もそれ知りたい
グループ毎にoptionタグをfor文とかで作るしか思いつかない
0455nobodyさん2012/01/06(金) 00:38:14.96ID:???
これじゃね?
http://www.yiiframework.com/forum/index.php?/topic/6903-how-can-i-generate-a-select-list-with-optgroup/
0456nobodyさん2012/01/06(金) 01:52:04.52ID:???
public function getOptions()
{
$groupLists=array(
array('id'=>'1', 'name'=>'北海道地方'),
array('id'=>'2,3,4,5,6,7', 'name'=>'東北地方'),
array('id'=>'8,9,10,11,12,13,14', 'name'=>'関東地方'),
array('id'=>'15,16,17,18,19,20,21,22,23', 'name'=>'中部地方'),
array('id'=>'24,25,26,27,28,29,30', 'name'=>'近畿地方'),
array('id'=>'31,32,33,34,35', 'name'=>'中国地方'),
array('id'=>'36,37,38,39', 'name'=>'四国地方'),
array('id'=>'40,41,42,43,44,45,46,47', 'name'=>'九州地方'),
array('id'=>'48', 'name'=>'その他'),
);
0457nobodyさん2012/01/06(金) 01:53:00.12ID:???
  
   $prefs=$this->findAll();
   $options=array();
   foreach ($prefs as $pref)
   {
    $group='';
    foreach ($groupLists as $groupList)
    {
     $groupIds=explode(',', $groupList['id']);
     foreach ($groupIds as $groupId) {
      if ($groupId == $pref['id']) {
       $group=$groupList['name'];
      }
     }
    }
    $options[]=array(
     'id'=>$pref['id'],
     'name'=>$pref['name'],
     'group'=>$group,
    );
    
   }
   return $options;
  }
0458nobodyさん2012/01/06(金) 01:56:14.41ID:???
Prefectureという都道府県テーブル(id,name)がある前提で、モデルに>>456-457を記述

ビューで
<?php echo $form->dropDownList($model,'prefecture_id',
         CHtml::listData(Prefecture::model()->getOptions(), 'id', 'name', 'group')); ?>
のようにしてgetする

一応これでおkだったが、
リファクタリングしてないし、Yii初心者なので設計にも問題あるかもしれん
0459nobodyさん2012/01/06(金) 14:46:56.13ID:???
日本語のフォーラムって存在しないのですか?
0460nobodyさん2012/01/06(金) 15:04:54.05ID:???
ここ
0461nobodyさん2012/01/06(金) 15:07:41.93ID:???
ここは無理です
0462nobodyさん2012/01/06(金) 15:10:50.22ID:???
Yiiオフィシャルの日本のフォーラムです
http://www.yiiframework.com/forum/index.php?/forum/21-japanese/
0463nobodyさん2012/01/06(金) 15:14:12.79ID:???
あーでも今現在Yiiのサイト、アクセスしにくいみたいですので、あしからず。
0464nobodyさん2012/01/06(金) 17:14:37.32ID:???
オフィシャルフォーラムは使い難いのでここを使って下さいまんこ
0465nobodyさん2012/01/06(金) 17:30:59.01ID:???
ここはいやです
0466nobodyさん2012/01/06(金) 17:37:17.77ID:???
ここが嫌なのにここで質問してんじゃないよ
0467nobodyさん2012/01/06(金) 19:09:20.76ID:???
メンテってまだ終わってないのかな?まだアクセスできない。日本語ドキュメントのミラーサイトって何処かないかな?
0468nobodyさん2012/01/06(金) 22:49:00.48ID:???
メンテ結構頻繁にあるな
ローカルにリファレンス落としといた方がいいな
0469nobodyさん2012/01/07(土) 11:11:31.49ID:???
リファレンスってアーカイブに入ってますよね?
でもWEBのみたいにインクリメンタルサーチできるリファレンスだと良いんですけど
無いですね
0470nobodyさん2012/01/07(土) 11:56:36.06ID:???
やべえYii楽しいわ
CakePHPより思想が洗練されてる
初めてRails触ったときの楽しさ
0471nobodyさん2012/01/07(土) 16:30:58.27ID:???
coffeescriptは正式に対応しないのかな
触ったこと無いから詳しくないけど、流行りらしいじゃん?
0472nobodyさん2012/01/07(土) 18:22:52.36ID:???
>>470
仲間が増えて嬉しい。
0473nobodyさん2012/01/08(日) 00:51:56.66ID:???
うん、うん
なんか楽しいよね!
ソースを眺めて回るのも、背中の数字が上がって良い感じ
0474nobodyさん2012/01/08(日) 14:31:22.46ID:???
>>458
ってかよく都道府県ってテーブルに入れてるけど、
別に内容変わらないし、データも少ないからDBに入れておく必要なくね?
都道府県データの配列持ったモデル作ったらよくね?
0475nobodyさん2012/01/08(日) 16:48:37.12ID:???
それじゃ大阪府が大阪都になったとき対応できない
0476nobodyさん2012/01/08(日) 17:15:03.74ID:???
あー、そういえばタイムリーにそういう話題もありますね。
0477nobodyさん2012/01/08(日) 17:35:37.67ID:???
>>475
配列の値変えるだけじゃん
0478nobodyさん2012/01/08(日) 17:44:44.48ID:???
CMSでユーザに変更されること想定かな?
0479nobodyさん2012/01/08(日) 17:57:53.68ID:???
俺も都道府県は配列で持ってるな
DBに保存するメリットは、保守を全部クライアント任せにするようなケースで簡単に変更出来るってところか
0480nobodyさん2012/01/08(日) 18:59:21.55ID:???
そもそも都道府県をグループ別にして
CHtml::activeDropDownList()件は解決したんでしょうか?
自分も知りたいところではあるんですが
0481nobodyさん2012/01/08(日) 19:20:16.77ID:???
以下はCController::renderPartial()の第3,4引数を使った何かを説明していると思うんですが
どういうことを説明しているか、わかる方おられますか?
http://www.yiiframework.com/doc/api/1.1/CController#c2596
0482nobodyさん2012/01/08(日) 19:26:27.57ID:???
>>480
>>456-458見てあげろよ可哀想だろ
0483nobodyさん2012/01/08(日) 20:16:26.33ID:???
>>456-458
九州地方は46までで、47のみその他に修正して、完全に動作しました。ありがとうございます


0484nobodyさん2012/01/08(日) 20:42:11.41ID:???
nice tips !
0485nobodyさん2012/01/09(月) 00:01:41.81ID:???
あらかじめgroupカラムも作っておくと無駄なコード書かなくてもいいですよね?
モデルのgetPrefOptions()でreturn CHtml::listData(Pref::model()->findAll(), 'id', 'name', 'group');して
ビューで<?php echo CHtml::activeDropDownList($model, 'pref_id', $model->prefOptions); ?>みたいな
モデルのrules()はrequiredとarray('pref_id', 'in', 'range'=>range(1, 47)),でOKかな?
0486nobodyさん2012/01/09(月) 13:41:34.32ID:???
今までずっと都道府県テーブルつくってたけど、
よく考えたら必要じゃないよな。
これに限らず、データがほぼ固定のものってプログラムの中で持てばいいんじゃ、、、?
わざわざDBで持つと、処理が重くなるだけだし
0487nobodyさん2012/01/09(月) 14:49:29.31ID:???
この記事参考になりますよ。一番したの発言者の情報。その通りだと思いました。
http://cakephp.jp/modules/newbb/viewtopic.php?topic_id=1404&forum=3
0488nobodyさん2012/01/09(月) 14:50:35.66ID:???
日本ユーザー会ってあったのね。知らなかった。。
0489nobodyさん2012/01/09(月) 14:56:09.49ID:???
マニュアル翻訳してくれてる人たちかな?
まじ助かってるわ
あの成果物がなければ俺がYiiを使うこともなかった
0490nobodyさん2012/01/09(月) 14:57:48.85ID:???
>>487
海外や世界のYiiユーザーの考えを知りたいんだけど、
どういう英語で検索したらいいんだろ
0491nobodyさん2012/01/09(月) 15:14:59.76ID:???
>>490
yii, state, city, area
■ このスレッドは過去ログ倉庫に格納されています