php
PHPからさくらのオブジェクトストレージを利用したくなり、AWS SDKを使えるか試したときのメモ。 AWS SDK for PHP v2 を使った。 list objects composer.json { "require": { "aws/aws-sdk-php": "2.*" } } list_objects.php '<<アクセスキー>>', 'secret' …
またこのネタです。YiiFrameworkのCManyManyRelationは中間テーブルへのアクセスをサポートしていません。ならばオレオレリレーションによってそれを可能にしてみます。前エントリのまとめと反するのですが、まあ、あそびばってことで。 実現のためにCJoinEl…
YiiFrameworkのCManyManyRelationは中間テーブルへのアクセス手段を用意してくれません。なので、中間テーブルに属性を持たせたいときはHasManyとBelongsToを使うのが、今のところエレガントな解決方法のようです。 http://www.yiiframework.com/wiki/285/ac…
yii ActiveRecord の弱点 yii ActiveRecord は、many-manyの中間テーブルに属性を付けにくい弱点があります。たとえばこんな問題とか。 Accessing data in a join table with the related models いまだにキレイな解決方法がない。と思う。ほんとにないの? …
公式ドキュメントを購入したのは先月だったか。ようやくはじめた。 はじめて書いたコード 見よう見まねで書いたログインフォームがこれ。 action_login と action_dologin で同じものをviewに渡そうとゴニョゴニョしていますね。controllers/auth.php ''); …
PHPTALと格闘すること数日。PHPTALにはif文っぽい表現をするにはPHPモディファイアを使わざるをえないことに悩みました。 condとeqがあればいいのに。なぜだろう。これが TAL-way なのか。でも欲しい。PHPモディファイアは使いたくない。でも。でも。。。 ん…
PHPTALやってみようかと思ったので、YiiFrameworkで動くPHPTALViewRenderer作ってみた。 インストール PHPTAL phptalとかgithubからzipをダウンロードし解凍し、classes ディレクトリ下の PHPTALディレクトリと PHPTAL.phpを prorected/vendor/PHPTAL へコピ…
前エントリのロール管理はこれでもロール管理かという代物でした。今回はyii-rightsを使いGUIで管理できるようにします。blogデモにyii-rightsを組み込んだソースやデモも用意されている。手っ取り早く確認したいならはここから。 導入 とりあえずドキュメン…
前エントリで触れなかったupdateOwnPost関連のアクセス制御について。アクションに書いてしまいがちな権限チェックをフィルタに書いてアクションをシンプルに保っていきたい。 パラメータ付き権限アイテム ここの図でupdateOwnPostを再確認する。updateOwnPo…
ロールベースアクセスコントロール(RBAC)を導入するのは面倒で後回しにしてきました。ロールのデザイン、ロール管理の実装、ユーザー管理の実装、権限付与の実装には時間がかかりそうで躊躇してしまうのです。そこでこれらをできる限り省略してRBACを導入す…
blogデモにユーザー管理機能を追加したときのメモ。gii-Crud GeneratorでUserモデルメンテナンス機能を生成し、生成したコードを調整します。 Userモデルメンテナンス機能を生成する gii を有効にする ついでにgiiにたどり着けるよう urlManager も調整する…
YiiFrameworkのアクセスコントロールを学習したときのメモ。 ログインから始めロールベースアクセスコントロール、YiiRightsに辿り着きたい。素直にcookbook買うべきなのかもしれない。 ログイン ユーザー認証。これがなくちゃ話にならない。最初に注意すべ…
{{void(...)}}でなく{%do...%}で 前のエントリで{{void(this.endWedgit)}}と書きましたが、{%do this.endWidget %}でいいことがわかり修正しました。ごめんなさい。 フラグメントキャッシュとは フラグメントキャッシュはページの断片をキャッシュする事を指…
twig-rendererのfiltersに関数を指定するとtwigのfilter構文でその関数が使えるようになります。twigのfilterとバッティングしたらどうなるんだろ。 こんな感じ。 'viewRenderer'=>array( 'class'=>'ext.etwigviewrenderer.ETwigViewRenderer', 'filters' =>…
これをどうするか 'hoge')); ?> Yii クラスをアクセス可能にする Yiiクラス を globals に登録するprotected/config/main.php 'viewRenderer'=>array( 'class'=>'ext.etwigviewrenderer.ETwigViewRenderer', 'globals' => array( 'Yii' => 'Yii', ), ),ビュ…
yii は $this->rendarPartial ですが、Twig はincludeタグで書きます。 renderPartial('_view', array('data'=>$model)); ?> ↓↓↓↓↓ {% include '/views/post/_view.twig' with {'data':model} %} 見たまんま書き換えできると思います。そしてrenderPartialで…
追記 2012.03.15 やだなーと思っていた{{void(...)}}ですが、{%do...%}で書くべきと気がつき、修正しました。 yiiのスケルトンappでは ページレイアウトの大枠を layouts/main.php、内部のカラム構造を layouts/column1.php, column2.php に実装しています。…
追記 2012.03.15 やだなーと思っていた{{void(...)}}ですが、{%do...%}で書くべきと気がつき、修正しました。 ほぼ前のと同じですが、素直に this.beginWidgetでもうまくいきました。 前の{% set form = this.createWidget() %}...{{ form.run }}は何かの役…
beignWidget/endWidgetでも書けます。->こちら ここのcreateWidget/wedgit.run は何かの役に立つ(アンチパターンとか)かもしれないので残しておきます。 検証中のコードですがおいておきます。 {% set form = this.createWidget() %} すればwidgetをあきらめ…
続いてモデルを使わずzii.widgets.CGridtViewを使ってみる。 サンプルコード ボタンカラムは、データ各要素にprimaryKeyプロパティを要するのでコメントアウトしています。もちろん回避する方法はあるだろうが今回そこまでやらない。protected/controllers/S…
モデルを使わずzii.widgets.CListViewを使ってみる。 CListViewで何が得られるのか検証したかったのですが、モデルを用意するのが面倒だったので書きました。 サンプルコード protected/controllers/SiteController.php 1, 'title'=>'アルファ', 'create_tim…
zii.widgets.CDetailViewて何を出力するんだっけ。モデルを使わないサンプルコードを書いてみた。 サンプルコード "たいとる", "owner" => (object) array( "id"=>"owner.id", "name"=>"オーナーの名前", ), "description"=>"<b>descriptiondescription</b>", "city…
前エントリの続き。 新たに3つのタグ *{}, @{}, @part{} をサポートしてみました。つっても置換を足しただけですが。 UnphptagViewRenderer.php * array( * 'components'=>array( * ...... * 'viewRenderer'=>array( * 'class'=>'path.to.class.UnphptagVie…
yiiのviewにあふれるPHPタグがなんとかならんかと思い作ってみたwww。使いかたはコメント参照。 * array( * 'components'=>array( * ...... * 'viewRenderer'=>array( * 'class'=>'path.to.class.UnphptagViewRenderer', * ), * ), * ) * </pre> * * echo: * %{ Y…
今回は作成したテーブルにデータを登録し、モデルからDBのデータにアクセス可能かユニットテストを使って検証します。とりあえずテスト概要を読んでおいてください。PHPUnitをインストールしていなければしといてください。 テスト計画 まずどんなテストをす…
今回はモデルを作ります。 Gii準備 yiic shell のコード生成機能は、バージョン 1.1.2 以降、非推奨(depricated)となっています。 http://www.yiiframework.com/doc/guide/1.1/ja/quickstart.first-app-yiic とのことなのでyiicを使わずGiiを使ってモデルを…
初見の人がリレーショナルアクティブレコード - ガイドをみてテーブルを作成しモデルを作成しリレーション定義しそれを検証できるんだろうか、ガイド記事は断片的過ぎやしないか、横断的なまとまった情報ほしいなあ、と思い書いてみました。。 yiiのカイドペ…
PHP環境をVC9に統一するため、xampp1.7.5-beta2を使うことにしました。が、またまたPHPUnitインストール手順に嵌りました。 下記のサイトを参考にさせていただき、次の手順でインストールに成功しました。ありがとうございます。*1 手順 コマンドプロンプト…
明日の自分へ。たぶん思い出せないだろうから書いておきます。 PHPUnitインストールしておきましたよ。 VC9にするためxampp1.7.5betaにしたのは知っていました、が、諸々アップデートを怠っていましたね。PHPUnitインストールしておきましたよ。使うんでしょ…
yii1.1.8 リリースとともにガイドのリレーショナルアクティブレコードページが更新され、英語ガイドページとの同期が取れました。これまで、日本語ガイドと英語ガイドを行き来して面倒だったんです。翻訳の皆さんありがとうございます。リレーション宣言で特…