Yiiにだって便利なエクステンションはあるんだい!
ってコトでいくつか使ってみました。

yii-userエクステンション

これは前に書いたや。
終わり。

ktaiエクステンション

ktai
微妙に使ってます。
というのも、自分で書いた携帯用viewファイル読み込み使いたかったし、SoftBankでのUTF8化に対応してなかったので。。
※SoftBank機だと書き込みフォームをUTF8にしないと絵文字送ってくれない機種などあります。

とか書いたけど携帯用サイトを構築するのに便利な機能が一通り揃ってますよ!
docomo向けにcssをインライン化してくれたり、絵文字に対応、携帯用viewファイルなど。
ただ、一個バグがあって連続した絵文字の表示が出来なかったです。
とはいえ一箇所修正するだけっぽいので自分で直しちゃいましょう。
filters.ktai.Emoji.phpの150行目あたりです。

  static public function convert($str)
  {
    // $regexp = '/\[([ies]:[0-9]{1,3})\]/';
    $regexp = '/\[([ies\*]):([\x21-\x7E]+)\]/';
    return preg_replace_callback($regexp, array('Emoji', 'convert_callback'), $str);
  }

これを下記のように。

  static public function convert($str)
  {
    // $regexp = '/\[([ies]:[0-9]{1,3})\]/';
    $regexp = '/\[([ies\*]):([\x21-\x7E]{1,3})\]/';
    return preg_replace_callback($regexp, array('Emoji', 'convert_callback'), $str);
  }

えぇ。
見て分かるようにアップデートされた際に量指定演算子付け忘れられたダケみたいです。
これで連続した絵文字も無問題になります。

firephp-logrouteエクステンション

firephp-logroute
ログ出力をFirePHPに対応したヘッダーで出すエクステンションです。
いや、別にCWebLogRouteでいいじゃん!って話もあるけど。
上記の携帯エクステンションと一緒に使うとログ部分がSJIS化されずに化けたりしますしね。
使い方はコチラでCoreファイルをDLしてvendorsに保存。
firephp-logrouteエクステンションもDLして保存。
あとはconfig/main.phpのlogの設定をかえるだけです。

'log'=>array(
    'class'=>'CLogRouter',
    'routes'=>array(
        array(
            'class' => 'ext.shiki.firePHPLogRoute.ShikiFirePHPLogRoute', // "ext" alias points to /protected/extensions
            'fbPath' => 'application.vendors.FirePHPCore031.lib.FirePHPCore.fb', // set path to fb.php
        ),
    ),
),

これで画面は綺麗なまま、FireBugでログをチェック出来ます。
ヨカッタ(・∀・)

active-data-provider-with-scopesエクステンション

active-data-provider-with-scopes
これ。
前回のNameScopeの時には書かなかったけど、CDataProvidorでNameScopeが使えないという弱点を克服するものです!
まぁムチャすれば出来ないコトもなかったんですが、このエクステンションを使えばより直感的になります。
使い方は…DLしてcompornentsディレクトリにでも放り込んで下さい。
したら、ControllerでCをEに変更するだけです。
例えばCRUDしたIndexアクションの場合は下記のような感じだと思います。

	public function actionIndex()
	{
		$dataProvider=new CActiveDataProvider('Post');
		$this->render('index',array(
			'dataProvider'=>$dataProvider,
		));
	}

これのCActiveDataProviderEActiveDataProviderに変更するだけ。
これでNameScopeを使う準備はOKです。
雰囲気としては

		$dataProvider=new EActiveDataProvider('Profile',array(
			'criteria'=>array(
				'scope'=>array('published'),
			),
		) );

やっほーい!
便利なNameScopeが更に便利に使えちゃいます!

おまけ:ムリにCActiveDataProviderにsocpeを使うネタ。

		$dataProvider=new CActiveDataProvider('Profile',array(
			'criteria'=>Post::model()->published()->getDbCriteria(),
		) );

何か気持ち悪いよね!

関連する記事はありません。