なんかプロバイダの関係かちょこちょこ接続IPが変わってて
Ethnaのセッションが上手く動いてなかった
Ethna_SessisonでREMOTE_ADDR見てるとこがあるので
最初isVallidを空でオーバライドしたんだけど
だめな場合があったので
<?php
class Sample_Session extends Ethna_Session{
//携帯用セッションでIDを見ない
function isValid()
{
if (!$this->session_start) {
if (!empty($_COOKIE[$this->session_name]) || session_id() != null) {
setcookie($this->session_name, "", 0, "/");
}
return false;
}
return true;
}
}
?>
のようにして
Controlerでこのセッションを利用するように記述した
Ethnaのバージョンを2.3.2?に上げたら
ethna add-action-cli が使えなくなっていた
なんか変わった?
ethna add-action -g cli sample
とすることでcli用のスケルトンが生成される
パスワード等を
入力フォームから投入して
impportForm()とかで一気に設定させる場合
AppObjectのsetをオーバライドして
function set($key, $value)
{
if ($key == 'password') {
$value = md5($value);
return $this->prop[$key] = $value;
} else {
return parent::set($key, $value);
}
}
のようにしておくとAction無いで都度
$xxx->set('password',md5($this->af->get('password')))
とかしなくてすむ
Editアクションで登録データを編集した後に
Edit/Doアクションでupdateとかしようとしたとき
Editのaction_formでプライマリーキーとかを持たない場合
(セッションに保持して引き回したり)
Edit/DOで
$userManager = & $this->backend->getManager("user");
$user = & new Sample_User($this->backend,'user_id',$this->session->get('manager[edit_uid]'));
$user->importForm();
$ret = $userManager->update($user);
とすると(更新日とかあったので上記例はAppManager経由で更新)
action_formで定義されたいないキーがnullで更新されてしまうため
制約エラーになっていた
nullはインポートしてほしく無いなと思っていたところ
$user->importForm(OBJECT_IMPORT_IGNORE_NULL);
と記述すると不要なものは入らないらしい