tjtjtjのメモ

自分のためのメモです

php

さくらのオブジェクトストレージをAWS SDK for PHP 2で

php

PHPからさくらのオブジェクトストレージを利用したくなり、AWS SDKを使えるか試したときのメモ。 AWS SDK for PHP v2 を使った。 list objects composer.json { "require": { "aws/aws-sdk-php": "2.*" } } list_objects.php '<<アクセスキー>>', 'secret' …

Yiiでも中間テーブルにアクセスしたい

またこのネタです。YiiFrameworkのCManyManyRelationは中間テーブルへのアクセスをサポートしていません。ならばオレオレリレーションによってそれを可能にしてみます。前エントリのまとめと反するのですが、まあ、あそびばってことで。 実現のためにCJoinEl…

Yiiで中間テーブルに属性を持たせたいときはHasMany, BelongsToを使う

YiiFrameworkのCManyManyRelationは中間テーブルへのアクセス手段を用意してくれません。なので、中間テーブルに属性を持たせたいときはHasManyとBelongsToを使うのが、今のところエレガントな解決方法のようです。 http://www.yiiframework.com/wiki/285/ac…

laravelのpivotいいなと思ったの巻

yii ActiveRecord の弱点 yii ActiveRecord は、many-manyの中間テーブルに属性を付けにくい弱点があります。たとえばこんな問題とか。 Accessing data in a join table with the related models いまだにキレイな解決方法がない。と思う。ほんとにないの? …

laravel はじめました

公式ドキュメントを購入したのは先月だったか。ようやくはじめた。 はじめて書いたコード 見よう見まねで書いたログインフォームがこれ。 action_login と action_dologin で同じものをviewに渡そうとゴニョゴニョしていますね。controllers/auth.php ''); …

PHPTALのカスタムモディファイア if, eq を作ってみた

PHPTALと格闘すること数日。PHPTALにはif文っぽい表現をするにはPHPモディファイアを使わざるをえないことに悩みました。 condとeqがあればいいのに。なぜだろう。これが TAL-way なのか。でも欲しい。PHPモディファイアは使いたくない。でも。でも。。。 ん…

YiiFrameworkでPHPTALしてみた

PHPTALやってみようかと思ったので、YiiFrameworkで動くPHPTALViewRenderer作ってみた。 インストール PHPTAL phptalとかgithubからzipをダウンロードし解凍し、classes ディレクトリ下の PHPTALディレクトリと PHPTAL.phpを prorected/vendor/PHPTAL へコピ…

yiiのアクセス制御を学ぶ yii-rightsを導入するの巻

前エントリのロール管理はこれでもロール管理かという代物でした。今回はyii-rightsを使いGUIで管理できるようにします。blogデモにyii-rightsを組み込んだソースやデモも用意されている。手っ取り早く確認したいならはここから。 導入 とりあえずドキュメン…

yiiのアクセス制御を学ぶ アクションで権限チェックしないの巻

前エントリで触れなかったupdateOwnPost関連のアクセス制御について。アクションに書いてしまいがちな権限チェックをフィルタに書いてアクションをシンプルに保っていきたい。 パラメータ付き権限アイテム ここの図でupdateOwnPostを再確認する。updateOwnPo…

yiiのアクセス制御を学ぶ CDbAuthManager導入の巻

ロールベースアクセスコントロール(RBAC)を導入するのは面倒で後回しにしてきました。ロールのデザイン、ロール管理の実装、ユーザー管理の実装、権限付与の実装には時間がかかりそうで躊躇してしまうのです。そこでこれらをできる限り省略してRBACを導入す…

blogデモにユーザー管理機能を設ける

blogデモにユーザー管理機能を追加したときのメモ。gii-Crud GeneratorでUserモデルメンテナンス機能を生成し、生成したコードを調整します。 Userモデルメンテナンス機能を生成する gii を有効にする ついでにgiiにたどり着けるよう urlManager も調整する…

yiiのアクセス制御を学ぶ ログインの巻

YiiFrameworkのアクセスコントロールを学習したときのメモ。 ログインから始めロールベースアクセスコントロール、YiiRightsに辿り着きたい。素直にcookbook買うべきなのかもしれない。 ログイン ユーザー認証。これがなくちゃ話にならない。最初に注意すべ…

yiiext/twig-renderer でビューをフラグメントキャッシュしたい

{{void(...)}}でなく{%do...%}で 前のエントリで{{void(this.endWedgit)}}と書きましたが、{%do this.endWidget %}でいいことがわかり修正しました。ごめんなさい。 フラグメントキャッシュとは フラグメントキャッシュはページの断片をキャッシュする事を指…

yiiext/twig-rendererのビューで独自の書式を使いたい

twig-rendererのfiltersに関数を指定するとtwigのfilter構文でその関数が使えるようになります。twigのfilterとバッティングしたらどうなるんだろ。 こんな感じ。 'viewRenderer'=>array( 'class'=>'ext.etwigviewrenderer.ETwigViewRenderer', 'filters' =>…

yiiext/twig-rendererのビューでメッセージを扱いたい

これをどうするか 'hoge')); ?> Yii クラスをアクセス可能にする Yiiクラス を globals に登録するprotected/config/main.php 'viewRenderer'=>array( 'class'=>'ext.etwigviewrenderer.ETwigViewRenderer', 'globals' => array( 'Yii' => 'Yii', ), ),ビュ…

yiiext/twig-rendererでページの一部分をテンプレート化したい

yii は $this->rendarPartial ですが、Twig はincludeタグで書きます。 renderPartial('_view', array('data'=>$model)); ?> ↓↓↓↓↓ {% include '/views/post/_view.twig' with {'data':model} %} 見たまんま書き換えできると思います。そしてrenderPartialで…

yiiext/twig-rendererでビューテンプレートを継承したい

追記 2012.03.15 やだなーと思っていた{{void(...)}}ですが、{%do...%}で書くべきと気がつき、修正しました。 yiiのスケルトンappでは ページレイアウトの大枠を layouts/main.php、内部のカラム構造を layouts/column1.php, column2.php に実装しています。…

yiiext/twig-rendererでWidgetを使いたい

追記 2012.03.15 やだなーと思っていた{{void(...)}}ですが、{%do...%}で書くべきと気がつき、修正しました。 ほぼ前のと同じですが、素直に this.beginWidgetでもうまくいきました。 前の{% set form = this.createWidget() %}...{{ form.run }}は何かの役…

yiiext/twig-renderer

beignWidget/endWidgetでも書けます。->こちら ここのcreateWidget/wedgit.run は何かの役に立つ(アンチパターンとか)かもしれないので残しておきます。 検証中のコードですがおいておきます。 {% set form = this.createWidget() %} すればwidgetをあきらめ…

モデルを使わないCGridViewサンプル

続いてモデルを使わずzii.widgets.CGridtViewを使ってみる。 サンプルコード ボタンカラムは、データ各要素にprimaryKeyプロパティを要するのでコメントアウトしています。もちろん回避する方法はあるだろうが今回そこまでやらない。protected/controllers/S…

モデルを使わないCListViewサンプル

モデルを使わずzii.widgets.CListViewを使ってみる。 CListViewで何が得られるのか検証したかったのですが、モデルを用意するのが面倒だったので書きました。 サンプルコード protected/controllers/SiteController.php 1, 'title'=>'アルファ', 'create_tim…

モデルを使わないCDetailViewサンプル

zii.widgets.CDetailViewて何を出力するんだっけ。モデルを使わないサンプルコードを書いてみた。 サンプルコード "たいとる", "owner" => (object) array( "id"=>"owner.id", "name"=>"オーナーの名前", ), "description"=>"<b>descriptiondescription</b>", "city…

UnphptagViewRenderer作ってみた その2

前エントリの続き。 新たに3つのタグ *{}, @{}, @part{} をサポートしてみました。つっても置換を足しただけですが。 UnphptagViewRenderer.php * array( * 'components'=>array( * ...... * 'viewRenderer'=>array( * 'class'=>'path.to.class.UnphptagVie…

UnphptagViewRenderer作ってみた

yiiのviewにあふれるPHPタグがなんとかならんかと思い作ってみたwww。使いかたはコメント参照。 * array( * 'components'=>array( * ...... * 'viewRenderer'=>array( * 'class'=>'path.to.class.UnphptagViewRenderer', * ), * ), * ) * </pre> * * echo: * %{ Y…

yiiカイドを横断してみる リレーション(3/3) - テスト

今回は作成したテーブルにデータを登録し、モデルからDBのデータにアクセス可能かユニットテストを使って検証します。とりあえずテスト概要を読んでおいてください。PHPUnitをインストールしていなければしといてください。 テスト計画 まずどんなテストをす…

yiiカイドを横断してみる リレーション編(2/3) - モデル作成

今回はモデルを作ります。 Gii準備 yiic shell のコード生成機能は、バージョン 1.1.2 以降、非推奨(depricated)となっています。 http://www.yiiframework.com/doc/guide/1.1/ja/quickstart.first-app-yiic とのことなのでyiicを使わずGiiを使ってモデルを…

yiiカイドを横断してみる リレーション編(1/3) - テーブル作成

初見の人がリレーショナルアクティブレコード - ガイドをみてテーブルを作成しモデルを作成しリレーション定義しそれを検証できるんだろうか、ガイド記事は断片的過ぎやしないか、横断的なまとまった情報ほしいなあ、と思い書いてみました。。 yiiのカイドペ…

xampp1.7.5-beta2にPHPUnitをインストールする

PHP環境をVC9に統一するため、xampp1.7.5-beta2を使うことにしました。が、またまたPHPUnitインストール手順に嵌りました。 下記のサイトを参考にさせていただき、次の手順でインストールに成功しました。ありがとうございます。*1 手順 コマンドプロンプト…

phpunit のインストール

明日の自分へ。たぶん思い出せないだろうから書いておきます。 PHPUnitインストールしておきましたよ。 VC9にするためxampp1.7.5betaにしたのは知っていました、が、諸々アップデートを怠っていましたね。PHPUnitインストールしておきましたよ。使うんでしょ…

リレーショナルアクティブレコードを使ってみる

yii1.1.8 リリースとともにガイドのリレーショナルアクティブレコードページが更新され、英語ガイドページとの同期が取れました。これまで、日本語ガイドと英語ガイドを行き来して面倒だったんです。翻訳の皆さんありがとうございます。リレーション宣言で特…