cakePHP $this->setがうざい
いまいち$this->set()とすれ違う事があるので調べてみました。
$this->set()の詳細↓
function set($one, $two = null) { $data = array(); if (is_array($one)) { if (is_array($two)) { $data = array_combine($one, $two); } else { $data = $one; } } else { $data = array($one => $two); } foreach ($data as $name => $value) { if ($name === 'title') { $this->pageTitle = $value; } else { if ($two === null && is_array($one)) { $this->viewVars[Inflector::variable($name)] = $value; } else { $this->viewVars[$name] = $value; } } } }
うおおこんな余計なことを!
余計なこと詳細↓
function variable($string) { $string = Inflector::camelize(Inflector::underscore($string)); //アンダーバーなんか削除してやんよ $replace = strtolower(substr($string, 0, 1)); //頭文字なんか小文字にしてやんよ return preg_replace('/\\w/', $replace, $string, 1); }
なので
$this->set('Abc','123');
あんまりしませんが、頭文字を大文字にしても、勝手に小文字にされるし(Viewで見たら$abc)
$this->set('abc_def','123');
とやってもキャメルケースにされてしまいます。(Viewで見たら$abcDef)
Inflector自体はとっても便利なんですけどね。
というわけで正しい指示は
$this->set(array('one','two','three'),array(1,2,3)); $this->set(array('one'=>1,'two'=>2,'three'=>3));
こんな感じなようです。あとオマケに
$this->set('title','深海魚特集');
これで$this->pageTitle設定してくれるのですね。はじめて知った!