CSS: sidebarとcontentがfloatのときcontentの中ではclearできない場合


多分、すごく初心者な問題なのだろうけど、半日悩んだ。結局解決もできていない。みんな、clearfix:after とか、わざわざやっているのだろうか。僕はどうにも合点がいかない。親のcontainerにoverflow:hiddenをする?それはうまく行かなかった。どうにも納得がいかない。さてその問題とは以下のようなことである。

<div id=”sidebar”>と<div id=”content”>を作ってお互いをfloat設定して横にならべるというのはもはや普通にやることだと思う。しかし、contentの中でclearをしてtableなどを記述すると、そのテーブルの上の領域がsidebarの残りの高さの分ごっそり空白になってしまう。例を書いてみよう。

#sidebar_xxxx { width: 120px; border:1px solid #F99; float: left; } #content_xxxx { margin-left:130px; border:1px solid #F99; }

コンテント
コンテント
↓ここにclear:leftを記述すると、テーブルのところまでに余計な余白が! 

コンテント コンテント
コンテント コンテント

このHTMLソースは以下↓

<style>
#sidebar_xxxx {width: 120px;border:1px solid #F99; float: left;}
#content_xxxx {margin-left:130px;border:1px solid #F99;}
</style>
<div id=”sidebar_xxxx”>
サイドバー<br />
サイドバー<br />
サイドバー<br />
サイドバー<br />
サイドバー<br />
サイドバー<br />
サイドバー<br />
</div>
<div id=”content_xxxx”>
コンテント<br />
コンテント<br />
↓ここにclear:leftを記述すると、<b>テーブルのところまでに余計な余白が</b>!
<div style=”clear:left”></div>
<table border=”1″>
<tr><td>コンテント</td><td>コンテント</td></tr>
<tr><td>コンテント</td><td>コンテント</td></tr>
</table>
</div>

上記の例では、clear:left を入れる必然性はないが、contentの中で何かをfloatしてclearしたいということは、普通にあるのではないかと思う。

 

CakePHP: 登録競合の回避方法は?


commitやrollbackをする仕組みはとりあえず実現できる。

JiroBlog » cakePHP覚書#2

CakePHP 1.3でのトランザクション処理の方法と注意点 – (DxD)∞
↑全てのモデルでやる必要はないらしい

でも変更の検知は別途やるべきなのか?

とりあえずお手軽にやるには、単純に更新時間などで調べる方法がいい。↓
“同時実行時の競合 回避方法について” フォーラム – CakePHP Users in Japan
当面はこの方法でいこうか。

 

CakePHP: 一覧のフィルタリングはモデルでやるべきなのか?


一覧をある条件でフィルタリングした上で、ページングをしたときにその条件を維持するということや、例えば「一覧」から「編集ページ」へ移動して、再度「一覧」に帰ってきたときにフィルタリングした状態を記憶しておくにはどうするのだろうか。

条件をGETで渡している人もいるようだ。「編集ページ」へ移動したときもいちいち渡すのだろうか?実際そうすることを提案しているQ&Aもあった。
“検索結果一覧でページングに対する条件保持について” フォーラム – CakePHP Users in Japan

コントロールを簡単に記述したいなら、モデルにその条件を記憶させて任せてしまうというのがお手軽でよい。実際、CakePHP 1.3からモデルにBehaviorが導入されたのだから、フィルタリングはモデルでやるのが正しいのかもしれない。ちなみに以下のようなコンポーネントもあるようだ。これでモデルでのフィルタリングができるみたいである。
CakeDC/search – GitHub

もっと簡単と思えるものとして以下があるようだが、こちらは設定した条件の読み出しができないのかも知れない。もしそうであればフィルタの状態を一覧上のフォームに再反映して表示するために条件を別途に記憶しておかなければならないことになる。
tkyk/cakephp-search-pagination – GitHub
その作者らしき人のブログ→ へびにっき

モデルでやることのもう一つのメリットは、例えば「編集ページ」上で「前レコードへ」「次レコードへ」のような移動ボタンを作りやすいことだ。ファイルメーカーやBentoを使っている人にはなじみのボタンだし欲しい気もする。

また、一方でポリシーとしてこういった処理はコントロールで行うべきだという気もする。上記のGET渡しのQ&Aでセッション変数を使う方法も書いているが、むしろその方がコントロールの書き方としてはすっきりするような気がする。しかし、そういう例をあまりWEB上で見つけることはできなかった。セッション変数を使うことはセキュリティとかリソース消費上よくないと言うことなのだろうか?

僕にはセッション変数を使うのが複雑にならなくてよいように思えるのだが、やはりまずいのだろうか。