Takeshi Amano
p****@takes*****
2008年 8月 19日 (火) 12:12:31 JST
天野です
天野はこちらを使う事が多いですね。
> $this->input->post('hoge')
> $this->validation->hoge = hoge2;
こういう代入できたんですか、知らんかった。
> $_POST['hoge'] = $this->validation->hoge;
こうやってPOSTの値を設定した場合、GETリクエストで最初に編集ページに
きた場合validation rulesが有効になってしまい、必須項目が足りないよん
と言われてしまうので、以下の様な処理を追加して、最初にGETで
来たときはvalidation rulesを無効にする必要があります。
編集用の関数は以下の用にすることがほとんどです。
function add() {
$this->load->library('validation');
if ($this->input->post('submit')) { //if ($_POST) { でも可
//フォームがsubmitされたらこっち
$rules['username'] = 'required';
$rules['email'] = 'valid_email';
$this->validation->set_rules($rules);
$fields['username'] = 'ユーザー名';
$fields['email'] = 'メールアドレス';
$this->validation->set_fields($fields);
} else {
//こっちは最初にGETでページがロードされたときに実行
//ここでデフォルトの値をセットする
$_POST['sex'] = SEX_MALE;
$_POST['category'] = 'default_category';
}
if ($this->validation->run() == false) {
//最初にGETで来たときと、validationが通らなかった場合はこっち
$this->load->view('admin/user_view');
} else {
//validationが通った場合はこっちでデータを保存しておしまい
$user_insert->username = $this->input->post('username');
$user_insert->category = $this->input->post('category');
Takeshi Amano
Ads are the cave art of the twentieth century - Marshall McLuhan