Вопрос:

Codeigniter - страница перенаправления form_validator, когда не запускается. и form_validator не работает

php codeigniter

36 просмотра

2 ответа

10 Репутация автора

Я создаю форму, которая обновляет данные. Когда пользователь нажмет кнопку «Редактировать» из таблицы BASEURL/Notices/Edit/1, откроется и когда пользователь нажмет кнопку «Обновить», чтобы обновить данные.

ниже код

public function Edit($id)
    {
        $this->load->model('Notices_M');
        $recordById = $this->Notices_M->fetchRecordById($id);
        $classname = $this->Notices_M->fetch_allclass();
        $this->load->view('Edit_Notice' , ['record' => $recordById,'classname' => $classname]);

    }

    public function update()
    {
        $this->load->model('Notices_M');
        $classname = $this->Notices_M->fetch_allclass();
        $this->form_validation->set_rules('notice_title' , 'Title' , 'required');
        $this->form_validation->set_rules('notice_description' , 'Description' , 'required');
        $this->form_validation->set_rules('notice_type' , 'Type' , 'required');
        $this->form_validation->set_rules('notice_class' , 'Class' , 'required');
        if($this->form_validation->run())
        {
            $post = $this->input->post();
            $noticeid = $post['notice_id'];
            $this->load->model('Notices_M');

            $recordById = $this->Notices_M->fetchRecordById($noticeid);
            $updatedData=$this->Notices_M->updateNotices($post,$noticeid);
            if($updatedData)
            {
                $this->session->set_flashdata('feedback','Notice Updated Successfully');

            }
            else
            {
                $this->session->set_flashdata('feedback','Notice Fail to Update. Try Again');
            }
            return redirect('Notices');
        }
        else
        {
//            What shouls I write here to make form_validator work
        }
    }

Прямо сейчас, когда пользователь оставляет поле ввода пустым, я перехожу на пустую страницу. и открытьBASEURL/Notices/update

HTML-код

<div id="page-wrapper">
            <div class="col-lg-12">

                <h1 class="page-header">Notices</h1>
                <?php if ($error = $this->session->flashdata('feedback')){?>
                    <div class="alert alert-warning">
                        <button type="button" class="close" data-dismiss="alert" aria-hidden="true">&times;
                        </button>
                        <?= $error; ?>
                    </div>
                    <?php } ?>

            </div>

            <div class="col-lg-12">
                <div class="col-xs-12 col-sm-12 col-md-12 col-lg-12">
                    <?php $attributes = array('role' => 'form', 'id' => 'addnotice');
echo form_open('Notices/update', $attributes); ?>
                    <?php foreach ($record as $value){ ?>
                        <legend>Edit Notices</legend>
                        <div class="col-xs-12 col-sm-4 col-md-4 col-lg-4">
                            <?php echo form_hidden('notice_id',$value->notice_id); ?>
                            <div class="form-group">
                                <label for="">Title</label>
                                <input type="text" class="form-control" id="notice_title" name='notice_title' placeholder="Title of the notice" Value="<?= $value->title ?>">
                                <?php echo form_error('notice_title', '<div class="alert alert-warning">', '</div>'); ?>
                            </div>
                        </div>

                        <div class="col-xs-12 col-sm-4 col-md-4 col-lg-4">
                            <div class="form-group">
                                <label for="">Notice Type</label>
                                <select class="form-control" name="notice_type" id="notice_type" Value="<?= $value->type_notice ?>" autofocus>
                                    <option>General Notice</option>
                                    <option>Exam Notice</option>
                                    <option>Other</option>
                                </select>
                                <?php echo form_error('notice_type', '<div class="alert alert-warning">', '</div>'); ?>
                            </div>
                        </div>
                        <div class="col-xs-12 col-sm-4 col-md-4 col-lg-4">
                            <div class="form-group">
                                <label for="">Select Class</label>
                                <select class="form-control" id="notice_class" name="notice_class" Value="<?= $value->class; ?>">
                                    <option value="All" selected>All</option>
                                    <?php foreach($classname as $row) { 
                                echo '<option value="'.$row->class_name.'">'.$row->class_name.'</option>'; 
                                }?>
                                </select>
                                <?php echo form_error('notice_class', '<div class="alert alert-warning">', '</div>'); ?>

                            </div>
                        </div>
                        <div class="col-xs-12 col-sm-12 col-md-12 col-lg-12">
                            <div class="form-group">
                                <label for="">Description</label>
                                <textarea class="form-control" id="notice_description" name="notice_description" placeholder="Description of the Notice" Value=""><?= $value->desc ?></textarea>
                                <?php echo form_error('notice_description', '<div class="alert alert-warning">', '</div>'); ?>
                            </div>
                        </div>
                        <button type="submit" class="btn btn-primary pull-right btn-lg">UPDATE</button>
                    <?php }?>
                        </form>
</div>
Автор: Ankit Sharma Источник Размещён: 02.02.2017 01:34

Ответы (2)


-1 плюса

544 Репутация автора

Пожалуйста, используйте проверку формы javascript перед отправкой ваших данных в Controller / Update (). Это обеспечивает конечному пользователю лучший опыт тоже.

Автор: Preetham Hegde Размещён: 02.02.2017 01:58

0 плюса

512 Репутация автора

try this code 

    first you can load your model in one time in 

    public function __construct()
    {

        parent::__construct();
       $this->load->model('Notices_M');//loads your model 


    }

public function update()
    {


        $this->form_validation->set_rules('notice_title' , 'Title' , 'required');
        $this->form_validation->set_rules('notice_description' , 'Description' , 'required');
        $this->form_validation->set_rules('notice_type' , 'Type' , 'required');
        $this->form_validation->set_rules('notice_class' , 'Class' , 'required');
        if($this->form_validation->run()==false)
        {

           echo validation_errors();
           if validation is wrong show message and
           redirect your desired location
        }
        else
        {
            $post = $this->input->post();
            $noticeid = $post['notice_id'];

            $updatedData=$this->Notices_M->updateNotices($post,$noticeid);
            if($updatedData)
            {
                $this->session->set_flashdata('feedback','Notice Updated Successfully');

            return redirect('Notices');
            }
            else
            {
                $this->session->set_flashdata('feedback','Notice Fail to Update. Try Again');
                return redirect('your location');
            }

        }
    }
Автор: Parvez Ahmed Размещён: 02.02.2017 06:23
Вопросы из категории :
32x32