контроллер / форма делает странные вещи, когда контент реализован - PullRequest
0 голосов
/ 15 февраля 2012

У меня есть контроллер ниже, и я хотел бы, чтобы он делал следующие вещи:

  • Показать ошибку, если имя пользователя занято -> в настоящее время просто передает как обычно даже через определенного пользователянаходится в базе данных.

  • Заполняется данными, если произошла ошибка -> в настоящее время заполняется импортированными данными, если они верны

  • Сохранять активное состояние выбранногоэлемент раскрывающегося меню

Вид:

<h1><?php echo $companyName; echo nbs(1);?> - <?php echo $pageTitle; ?></h1>



<?php
if($success == TRUE) {
echo '<section id = "validation">Page Updated</section>';   
}
?>
    <p>Error: <?php echo validation_errors();?></p>
    <div class="formContent">
        <form action="createUser" method="post">
            <fieldset class="control-group">
                <label for="userName">User Name:</label><input type="text" id="userName" name="userName"  value="<?php echo set_value('userName'); ?>" placeholder="User Name">
                <label for="userPassword">User Password:</label><input type="password" id="userPassword" name="userPassword" value="<?php echo set_value('userPassword'); ?>" placeholder="User Password">
                <label for="userFirstName">First Name:</label><input type="text" id="userFirstName" name="userFirstName" value="<?php echo set_value('userFirstName'); ?>" placeholder="First Name">
                <label for="userLastName">Last Name:</label><input type="text" id="userLastName" name="userLastName" placeholder="Last Name">
                <label for="userEmail">E-Mail:</label> <input type="text" id="userEmail" name="userEmail"  placeholder="Admin E-mail">
                <label for="userGroup"> User Group:</label>
                    <select name="userGroup" id="userGroup">
                        <option value="select">Please Select</option>
                        <option value="admin">Admin</option>
                        <option value="user">User</option>
                    </select>
                <label for="userActive"> User Active:</label>
                        <select name="userActive" id="userActive">
                            <option value="select">Please Select</option>
                            <option value="yes">Yes</option>
                            <option value="no">No</option>
                        </select>
                <div>
                    <button type="submit" class="btn-primary">Create</button>
                </div>
                </fieldset>
        </form>
    </div>

Контроллер:

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class createUser extends CI_Controller {


    public function index()
    {
        //Form Validation prep making sure its all clean

        $this->form_validation->set_rules('userName', 'User Name', 'trim|required|is_unique[users.userName]|xss_clean');
        $this->form_validation->set_rules('userPassword', 'User Password', 'trim|required|xss_clean|sha1');
        $this->form_validation->set_rules('userFirstName', 'First Name', 'trim|required|xss_clean');
        $this->form_validation->set_rules('userLastName', 'Last Name', 'trim|required|xss_clean');
        $this->form_validation->set_rules('userEmail', 'E-Mail', 'trim|required|xss_clean');
        $this->form_validation->set_rules('userGroup', 'User Group', 'trim|required|xss_clean');
        $this->form_validation->set_rules('userActive', 'User Active', 'trim|required|xss_clean');

        //If form validation fails load previous page with errors else do the job and insert data into db

        if($this->form_validation->run() == FALSE)
        {
            $data['success'] = "";
        }else{
            $username = $this->input->post('userName');
            $password = $this->input->post('userPassword');
            $firstname = $this->input->post('userFirstName');
            $lastname = $this->input->post('userLastName');
            $email = $this->input->post('userEmail');
            $group = $this->input->post('userGroup');
            $active = $this->input->post('userActive');

            $passwordHash = $this->encrypt->sha1($password); // Lets encrypt the password why sha1?  MD5 is for tossers

            // If the data is correct follow through with db insert

            if($this->users_model->createUser($username,$passwordHash,$firstname,$lastname,$email,$group,$active))
            {
                $data['success'] = TRUE;

            }

        }
        $data['companyName'] = $this->core_model->companyName();
        $data['pageTitle'] = "Create User";
        $this->load->view('admin/assets/header', $data);
        $this->load->view('admin/createUser', $data);
        $this->load->view('admin/assets/footer');
    }
}

/* End of file login.php */
/* Location: ./application/controllers/admin/createUser.php */

Ответы [ 2 ]

1 голос
/ 16 февраля 2012

На вашем месте я бы использовал обратный вызов (http://codeigniter.com/user_guide/libraries/form_validation.html#callbacks)

        $this->form_validation->set_rules('userName', 'User Name', 'trim|required|xss_clean|callback__checkUsername');

что касается ваших выпадающих списков, используйте функцию set_value ()

                <select name="userGroup" id="userGroup">
                    <option value="select"<?=(set_value('userGroup')=='select')?' selected="selected"':''?>>Please Select</option>
                    <option value="admin"<?=(set_value('userGroup')=='admin')?' selected="selected"':''?>>Admin</option>
                    <option value="user"<?=(set_value('userGroup')=='user')?' selected="selected"':''?>>User</option>
                </select>

Удачи

0 голосов
/ 15 февраля 2012

Я делаю это чисто с логической точки php, так как ничего не знаю о codeigniter. Что касается проверки того, что имя пользователя уже занято, я бы сделал запрос db в поле username в вашей таблице «users» и увидел быесли имя существует.

Я вижу, вы сделали это:

$this->form_validation->set_rules('userName', 'User Name', 'trim|required|is_unique[users.userName]|xss_clean');

Я не знаю стандарта для ссылок на таблицы БД в воспламенителе, но, возможно, вы ссылаетесь на поля неправильно.Кроме того, при проверке я бы поменял каждый на строчные, чтобы убедиться, что при проверке не учитывается регистр ... если только вы не хотите вводить имена пользователей с учетом регистра.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...