Codeigniter - 从同一控制器加载索引函数的控制器功能

时间:2015-05-07 18:23:23

标签: php codeigniter controller

我想知道我是否可以访问我的' new_admin'在我的' admin'内部运作没有new_admin的控制器开始添加到链接。

我的控制器:

<?php
class Admin extends CI_Controller
{
    public function __construct()
    {
        parent::__construct();
        $this->load->library('session');
        $this->load->model('Admin_model', '', TRUE);
        $this->load->view('admin/admin_nav');
    }

    public function index()
    {
        if($this->session->userdata('logged_in'))
        {
            $this->load->view('admin/admin_dashboard');
        } 
        else 
        {
            redirect('login');
        }
    }

    public function new_admin()
    {
        $data = [];

        if($this->input->server('REQUEST_METHOD') == 'POST')
        {
            $email = $this->input->post('email');

            $this->form_validation->set_rules('email', 'E-mail', 'required|valid_email');

            if($this->form_validation->run())
            {
                $result = $this->Admin_model->check_if_admin($email);

                if(!$result)
                {
                    $new_admin = new Admin_model();
                    $new_admin->email = $email;
                    $new_admin->password = password_hash('admin', PASSWORD_DEFAULT, ['cost' => 12]);
                    $this->Admin_model->add_new_admin($new_admin);
                    $data['success'] = 'success';
                }
                else
                {
                    $data["error_email"] = 'error';
                }
            }
        }

        $this->load->view("admin/admin_dashboard", $data);
    }
}

我的观点:

<div>
    <div>
        <h1>Dashboard</h1>
    </div>

    <div>
        <div>Add a new admin</div>
        <div>
            <form action="<?php echo site_url('admin/new_admin') ?>" method="post">
                <label for="email">Email new admin</label>
                <input type="text" name="email" id="email" value="<?php echo set_value('email'); ?>">
                <?php echo form_error('email', '<div>', '</div>'); ?>

                <?php if (isset($succes)): ?>
                <p><?php echo $succes; ?></p>
                <?php endif ?>

                <?php if (isset($error_email)): ?>
                <p><?php echo $error_email; ?></p>
                <?php endif ?>

                <button type="submit">Add new admin</button>
            </form>
        </div>
    </div>
</div>

此代码段有效,但我希望它能在没有更改网址的情况下工作。 这可能吗?

现在我首先得到的网址是:&#39; example.com/admin'
它变成了例如http://admin/new_admin'表格提交后。

提前致谢。

1 个答案:

答案 0 :(得分:1)

您可以将表单操作网址更改为索引功能,并检测它是否来自提交操作。这是一些想法

像这样更改您的表单操作URL(内部视图文件)

<form action="<?php echo site_url('admin') ?>" method="post">

现在更改您的控制器索引功能

public function index()
{
    if($this->input->post())
    {
        $this->new_admin();
    }
    else
    {
        if($this->session->userdata('logged_in'))
        {
            $this->load->view('admin/admin_dashboard');
        }
        else
        {
            redirect('login');
        }
    }

}