symfonyはスタイルシートをデフォルトで media="screen" で読み込む件@印刷用のCSSを作成
view.ymlに指定してやれば、
stylesheets: [ main: { media: print }]
みたいに変更したりはできるのですが
stylesheets: [main: { media: screen, print } ]
はエラー。
media: all
の存在に気づく。恥ずかしい……。
どうせscreenとprintくらいしか指定するメリットある属性なさそうだしとりあえずこれでよしとしよう。
でも二つだけとか三つだけとかがいいときは依然難しいままかな。
どうも別々にファイルを作って差し上げねばならんようだ。
@mediaは無視されるしね。
めんどくせー
もっとスマートな解決法はないものか
getterメソッドにデフォルト値
Definitive Guideを読み直し中
今まで気づいてなくて便利そうな機能をメモっていきます。
http://symfony.xrea.jp/1.0/book/02-Exploring-Symfony-s-Code.html#chapter.2.exploring.symfonys.code
パラメータホルダーのgetterはデフォルトの値を2番目の引数として受け取ります。これは条件文で可能なことよりも遙かに簡潔で便利なフォールバックメカニズム(訳注:障害が起きても最低限の機能を維持するメカニズム)を提供します。リスト2-17で例をご覧ください。
リスト2-17 - 属性ホルダーのgetterのデフォルト値を使う
// 'foobar' パラメータは定義されていないので、getterは空の値を返す
echo $response->getParameter('foobar');
=> null
// デフォルトの値はgetterを条件文に設置することで利用可能
if ($response->hasParameter('foobar'))
{
echo $response->getParameter('foobar');
}
else
{
echo 'default';
}
=> default
// しかしそれに対して2番目のgetterの引数を使う方が遙かに速い
echo $response->getParameter('foobar', 'default');
=> default
ファイル名にピリオドを含むjsファイルを、view.ymlで読み込めない
現象
symfonyにおいて、view.ymlでjavascriptを読み込むとき、jsファイルのファイル名にピリオドを含んでいるとうまくいかないことがある。
解決策
.jsという拡張子まで含めて指定する
詳細
view.ymlで
javascript: [ jsfile ]
としてやると、自動的にweb/js/jsfile.jsをヘッダに読み込んでくれるsymfonyちゃんですが、
js.file.jsなんていう名前のjavascriptを読み込もうとして
javascript: [ js.file ]
とすると、symfonyはjs.fileというファイルを読み込もうとしてしまう。
ファイル名にピリオドを入れてしまうと、「拡張子を指定した」と判断されてしまう模様。
従って、
javascript: [ js.file.js ]
と指定する必要がある。
タスクバーのコンテキストメニュー、サイズ変更(S)・移動(M)の使い方
参考)http://d.hatena.ne.jp/kazuki2life/20081201/1228159204
ずっと使い方が謎だったのです。
マウスだけでやってると、「移動」や「サイズ変更」をクリックしても、ポインタが変わるだけで何も起こらない。
何に使うか?
たまにデスクトップ上でウィンドウが行方不明になったりしませんか?
原因はよく分からないけど、隅のほうでめちゃめちゃちっちゃくなってたりすることがあって、最大化したり設定を開いてみたりその時々で対処してましたが、これで汎用的に解決できそうです。
ってかコレを解決したいがための調査ですた。
p243wが表示されなくなった
表題通り。
Acerのp243wが突然表示されなくなりました。
電源入れた状態で寝落ちてて、目覚めてたら消えてた。
いろいろやってみてわかったこと
- 信号認識してないとかじゃなくて、起動画面とかの表示がそもそもされない。
- というか、電源ボタンのオレンジ点灯と青点灯の様子を見ていると、信号は認識してるっぽい。
- ノートパソコンに接続しても、設定画面では認識されている様子
- →つまり純粋に「表示が出来ない」
取り敢えずやってみたこと
- 電源抜いて、電源ボタンを何度か押して放置
サポートに電話したらこう言われた。
数時間ほっといてダメだったら工場送りらしい。
はぁ。。
- 上記、やってみた→ダメだった。
再度電話すると、取り敢えず万全を期して数日は放置しろとの指示。コレでもダメだったらソフマップに電話だ。
外部キーをカスケード削除(onDelete: cascade)するように設定する
schema.ymlで引っかかる。
モデルのリビルドで、sql文がおかしいと言われる。
table: id: type: integer table2: table_id:
としていると、symfonyがtable_idを自動的に外部キーとして認識してくれる。
カスケード削除の実現の為に
table: id: type: integer table2: table_id: onDelete: cascade
とすると、どうもtable_idが外部キーであると気づいてくれないらしい。
ということで、少し面倒だが丁寧に外部キーとして指定してやる。
table: id: type: integer table2: table_id: type: integer foreignTable: table foreignReference: id onDelete: cascade
これでリビルドが通りました。
うーん。拡張構文にしても自動で認識してくれればいいのに。。1.1や1.2では改善されてるのかしら。
テストデータ ( data/fixture/test_data.yml ) のロードがうまくいかない2
Fatal error: Uncaught exception 'sfException' with message 'Unable to find path for class "○○Peer".' in /usr/share/pear/symfony/addon/propel/sfPropelData.class.php:207
Stack trace:
#0 /usr/share/pear/symfony/addon/propel/sfPropelData.class.php(46): sfPropelData->doDeleteCurrentData(Array)
#1 【プロジェクトの場所】/batch/load_data.php(15): sfPropelData->loadData('【テストデータの場所】')
#2 {main}
thrown in /usr/share/pear/symfony/addon/propel/sfPropelData.class.php on line 207
もう何度目かも分からないので、あまりに間抜けなミスながらもメモ。
- yamlの記述ミス
テストデータに記述するデータ構造は基本的に
-
- test_data.yml
テーブル名: テストデータ内でのレコードの名前: カラム: データ カラム: データ
となるがテーブル名はスキーマで指定したphpNameの方を使わないとダメ。
たとえば
-
- schema.yml
table_name: _attributes { phpName: TableName} column: value column: value
と、なっていれば「テーブル名」にはtable_nameではなくてTableNameを使わなければならない。
- symfony cc
新しいテーブル/データモデルを作成したとき、すぐにデータのロードを行うと。Peerモデルが読み込まれていない。
symfony cc
を叩いて。終了。
・・・・・・いい加減こういうしょーもない凡ミスをなくしていきたいところ。