0

私はフォームを持っています:

   <?php
        $attr = array('id'=>'urlSubmit');
        $urlInputAttr = array('name'=>'urlInput','value'=>'yourdomain.com','maxlength'=>'50','size'=>'25');
        echo form_open('urlSubmission',$attr);
        echo form_input($urlInputAttr);
        #echo form_submit('urlInput', '');
        echo form_close();
    ?>

urlsubmissionというコントローラー

       $this->load->model('domaincheckmodel');

            $this->domaincheckmodel->verifyduplicates($this->input->post('urlInput'));   

基本的に重複レコードをチェックし、新しいドメインを挿入するモデル内の関数(domaincheckmodel):

   function verifyduplicates($tldEntered){
    # $_POSTed value of urlInput
    ## Gather if the domain exists in db
    $DupDomains = $this->db->get_where('ClientDomain', array('tld'=>$tldEntered));

        if($DupDomains->num_rows() > 0 ){
            $this->load->view('err/domainexists'); ##domain already used
        }

        # else, no domain present, insert.
        else{
            #array of insert values:
            $insertNewDomain = array('tld'=>$this->input->post('urlInput',TRUE));
            $this->db->insert('ClientDomain', $insertNewDomain); 
            $this->load->view('success/domainfree'); ##domain is free and has been entered.
        }
    }
4

1 に答える 1

1
$this->domaincheckmodel->verifyduplicates($this->input->post('urlInput')); 



function verifyduplicates($tldEntered){
    # $_POSTed value of urlInput
    ## Gather if the domain exists in db
    $DupDomains = $this->db->get_where('ClientDomain', array('tld'=>$tldEntered));

フォームからコントローラー、モデルに渡していますが、post 変数が設定されたままになっていますか? 上記を試して、モデル自体で読み取ろうとする代わりに、コントローラーで post 変数をキャプチャしてモデルに渡しますか?

関数へのパラメータの受け渡しについて少し説明。次のように、括弧内にあるものを介してこれを行うことができます。

コントローラ:

$myVariable = $this->someModel->someFunction($someParameter)

モデル:

function someFunction($variableIWantToPopulateWithSomeParameter)

したがって、 someParameter はコントローラーからモデル内の関数名に渡されます。ただし、注意すべき点が 1 つあります。それは、モデル関数がパラメーターを期待するようになったことです。パラメーターを指定しない場合、つまり someFunction() を呼び出すと、エラーが発生します。これは、次のようにデフォルト値を指定することで回避できます。

function someFunction($myVariable = 1)

つまり、値が渡されない場合は $myVariable を 1 に等しくし、渡された場合は 1 を新しい値で上書きします。したがって、その関数に 2 つの呼び出しを送信すると、次のようになります。

//$myVariable is going to be 1, the default.

$this->someModel->someFunction();

//$myVariable is going to be 5, the value passed to it

$this->someModel->someFunction(5);

于 2013-01-25T04:21:16.360 に答える