LoginSignup
1
4

More than 5 years have passed since last update.

[初心者]Codeigniterのformとvalidationで引っかかった件

Posted at

フェイバリット回転寿司はサーモンとプリン、きりょうです。

■viewとcontrollerでうまくバリデーションまでたどり着かなかった話。

お名前フォームを下記のように書いてました。

    echo form_label("Name: ", "fullName");  //名前のラベルを作成
        $data=array(
                "name" => "name",
                "id" => "name",
                "value" => "Name",
                    );
    echo form_input($data); //名前データのinput

そしてsubmitで送る。

    echo form_textarea($data);
        $data=array(
                "name" => "contactSubmit",
                "value" => "SEND MESSAGE",
                "class" => "contact_btn center-block"
                    );
    echo form_submit($data);

コントローラーでバリデーション。1なら失敗2なら成功。

public function send_email(){

    $this->load->library("form_validation"); //ロード
    $this->form_validation->set_rules("name","name","required|min_length[1]"); //第一引数はformのタグ名、第二引数はエラーの時に出す項目名、第三引数がバリデーションルール(ミニマム1文字でおなしゃす指定をしている)

    if($this->form_validation->run()==FALSE){

        echo 1;exit;//バリデーションFALSEなら1

    }else{

        echo 2;exit;//それ以外(成功したら)2

    }
}

できたフォーム
THINK AND SENSEq.png
まずはフォームに何も入れずに出力を確認。

2って出る。

_人人人人人人人_
> クソ検閲 <
 ̄Y^Y^Y^Y^Y^Y ̄

なぜかフォームに何も入れてないのにバリデーション通っちゃいます。

結果から言うと、フォームに入れてたvalueでした。
そりゃあ最初っから値入ってたらいけるよね〜
ということで下記に変更。

    echo form_label("Name: ", "fullName");  //名前のラベルを作成
        $data=array(
                "name" => "name",
                "id" => "name",
                "value" => "",

                    );
    echo form_input($data); //名前データのinput

できたフォーム
THINK AND SENSE.png

Nameが半透明になってる。これじゃん。

ということで無事にFALSEの1が出力されました。

最初コントローラーで、
public function send_email($data)
とかやったり
public function send_email(){
$this->input->post('name')
とかでポスト受けとらなきゃいけないのかな〜とか
考えてたのですが、
validationクラスは勝手にポストの値をセットしてくれるようです。

関係ないけどlibraryとhelperって書いてあるのに日本語訳がバリデーションクラスって書いてあるの戸惑いますね。。
表記はバリデーションライブラリとかにしておいて、最初に
「ライブラリとはphpのクラスです」
って書いてくれれば親切ですね。

とりま現場からは以上です。

1
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
4