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 从控制器传递到模型中的函数名称。不过有一点需要注意,那就是模型函数现在期望一个参数,如果你不给它一个参数,即你调用 someFunction() 你会得到一个错误。这可以通过给它一个默认值来避免,如下所示:

function someFunction($myVariable = 1)

要做的就是说,如果我没有得到传递给我的值,我将使 $myVariable 等于 1,如果这样做,我将用新值覆盖 1。因此,如果您向该函数发送两个调用,这就是您所期望的:

//$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 回答