如何在codeigniter中从视图中调用控制器功能?

时间:2012-07-27 06:09:13

标签: php view controller

使用codeigniter,我有一个控制器,如下所示:

<?php if(!defined ('BASEPATH')) exit('not found basepath');

class **myController** extends CI_Controller{

    function __constructor(){
        parent::__constructor();
    }
    public function index(){
        $this->load->view('myview');
    }
    **public function myFn()**{
        echo "my controller is called"; 
    }
}

?>

和视图如下:

<form action="<?php echo base_url();?>myController/myFn" method="post" name="myform">
<input type="submit" name="submit" value="submit"/>
</form>

问题是,当我点击提交时,通过转到localhost来运行视图,并通过以下错误进行暗示!

  

在此服务器上找不到请求的URL / CodeIgniter / myController / myFn。

但是当我放**http://localhost/CodeIgniter/index.php/myController/myFn**时,我得到了正确的视图输出

5 个答案:

答案 0 :(得分:0)

在你的控制器中只需删除'**'。

<?php if(!defined ('BASEPATH')) exit('not found basepath');

class myController extends CI_Controller{

    function __constructor(){
        parent::__constructor();
    }

    public function index(){
        $this->load->view('myview');
    }

    public function myFn(){
    echo "my controller is called"; 
    }
}
?>

在你看来尝试:

<?php echo form_open('myController/myFn'); ?>
<?php echo form_submit('submit','SUBMIT'); ?>

答案 1 :(得分:0)

运行视图时

<form action="<?php echo base_url();?>myController/myFn" method="post" name="myform">
<input type="submit" name="submit" value="submit"/>
</form>

使用inspect元素查看表单标记中的操作是否与

相同
**http://localhost/CodeIgniter/index.php/myController/myFn**

答案 2 :(得分:0)

查看方

 <form method="post" action="<?php echo base_url();?>index.php?controlerfile/test" class="form">
Message: <input type="text" name="message">
<input type="submit" value="submit">

<div>
You have entered: 
<?php echo $message; ?>
</div>

controllerfile

function test()
{

    $data['message']= $this->input->post('message');
            //$this->output->append_output($message); 

    $this->load->view('backend/test',$data);


}

希望这会对你有帮助..

答案 3 :(得分:0)

如果您想调用此url = "doesn't matter" channel_future = create_connection(url).bind(lambda c: create_channel(c)) 之类的控制器功能,那么, 您必须使用.htaccess文件删除index.php文件。首先,您可以像这样更改config.php文件。

/CodeIgniter/myController/myFn

然后,创建.htaccess文件并将此代码复制到该文件。

//  Remove index.php

$config['index_page'] = ""

然后,将此.htaccess文件放在codeignator项目文件夹中。

要参考,请参阅此链接: - enter link description here

答案 4 :(得分:0)

我认为您忘记加载网址助手

function test()
{

    $this->load->helper('url');
    $data['message']= $this->input->post('message');
    $this->load->view('backend/test',$data);

}

这可能会对你有所帮助