Codeigniter:加载View后更改URL

时间:2016-06-22 10:01:30

标签: php codeigniter

我正在开发一个处理大量表单的项目。我搜索并尝试了搜索结果,但没有一个工作。

我的代码查看代码" uprofile.php"如下:

<form class="form-horizontal" method="post" action='<?php echo base_url() . "home/addnewagency" ?>'>
        <div class="form-group">
            <label for="company" class="col-sm-3 control-label">New Agency Name:</label>
            <div class="col-sm-4">
                <input type="text" class="form-control" id="newagency" name="newagency" placeholder="Plase Enter New Agency Name">
            </div>
        </div>
        <div class="form-group">
            <div class="col-sm-offset-3 col-sm-9">
                <button type="submit" class="btn btn-primary">Add</button>
            </div>
        </div>
    </form>

我的控制器&#34; home.php&#34;代码如下:

public function addnewagency() {
        $newagency = $this->input->post('newagency');
        $this->dis_model->newagency_model(strtoupper($newagency));
        $this->loadprofile();
    }
    public function loadprofile() {
        $data['inscompanyname'] = $this->dis_model->getcompany();
        $data['agentname'] = $this->dis_model->getagent();
        $data['agencyname'] = $this->dis_model->getagency();
        $data['clientname'] = $this->dis_model->getclient();
        $data['deptname'] = $this->dis_model->getdept();
        $this->load->view('uprofile', $data);
    }

当我提交表单时,控件将传递给addnewagency()数据插入数据库,URL为http://localhost/dis/home/addnewagency。回到调用函数后,它转到loadprofile()并加载视图uprofile。但是,URL仍然保持不变。但是,我希望它为 http://localhost/dis/home/login ,并且还想传递数据。有没有人知道如何实现这个目标?

欢迎所有积极的建议......

提前致谢...

4 个答案:

答案 0 :(得分:4)

现在你在addnewagency()中调用$ this-&gt; loadprofile()。如果要更改URL,则需要使用CodeIgniter的redirect()函数。

替换

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell 
{
    let cell : QuestionsListCell = self.questionsTableView.dequeueReusableCellWithIdentifier("QuestionsListCell") as! QuestionsListCell
    if let objModel : questionItem = questions[indexPath.row] as? questionItem
    {
          print(objModel.title)
    }
}

使用以下代码行,它将适合您。

$this->loadprofile()     

答案 1 :(得分:2)

如果你想更改网址使用重定向(base_url()。&#39; home / loadprofile&#39;);在你的控制器addnewagency();正如其他人所建议的那样,请参考这个问题来了解您是否可以在重定向功能中发送数据, Sending data along with a redirect in CodeIgniter

答案 2 :(得分:1)

我找到了另一种选择来完成此任务。 您无法使用$this->load->view函数来更改URL字符串,但是可以使用重定向方法来重定向到目标控制器函数。在调用重定向之前,请使用$this->session->set_flashdata设置Flash会话数据,该数据仅可用于下一个请求,然后将自动清除。您可以从official codeiginter documentation阅读它。

示例:

class Login extends CI_Controller {

    public function index()
    {
        if ($this->session->login_temp_data) {
            $data = $this->session->login_temp_data;
        } else {
            $data = array();
            $data['name'] = 'Guest' ;
        }
        $this->load->view('login', $data);
    }

    public function get_name()
    {
       $data = [];
       $data['name'] = 'John Doe';
       $this->session->set_flashdata('login_temp_data', $data);
       redirect("login");
    }

}

答案 3 :(得分:0)

您想使用redirect()功能

addnewagency()方法的底部,如下所示:

public function addnewagency() {
    $newagency = $this->input->post('newagency');
    $this->dis_model->newagency_model(strtoupper($newagency));
    redirect(base_url() . 'home/loadprofile');
}