Приложение блога Codeigniter 3: не удается перенаправить на обновленный пост - PullRequest
0 голосов
/ 27 апреля 2018

Я работаю над основным (всего 2 таблицей: авторами и сообщениями ) блог-приложением в Codeigniter 3.1.8.

У меня есть функция редактирования сообщения, используя форму обновления:

<?php echo form_open("posts/update"); ?>
      <input type="hidden" name="id" id="pid" value="<?php echo $post->id; ?>">
      <div class="form-group <?php if(form_error('title')) echo 'has-error';?>">
        <input type="text" name="title" id="title" class="form-control" placeholder="Title" value="<?php echo $post->title; ?>">
        <?php if(form_error('title')) echo form_error('title'); ?> 
      </div>
      <div class="form-group <?php if(form_error('desc')) echo 'has-error';?>">
        <input type="text" name="desc" id="desc" class="form-control" placeholder="Short decription" value="<?php echo $post->description; ?>">
        <?php if(form_error('desc')) echo form_error('desc'); ?> 
      </div>
      <div class="form-group <?php if(form_error('body')) echo 'has-error';?>">
        <textarea name="body" id="body" cols="30" rows="5" class="form-control" placeholder="Add post body"><?php echo $post->content; ?></textarea>
        <?php if(form_error('body')) echo form_error('body'); ?> 
      </div>
      <div class="form-group">
        <input type="submit" value="Save" class="btn btn-block btn-md btn-success">
      </div>
<?php echo form_close(); ?>

В модели Posts_model У меня есть метод, отвечающий за обновление сообщения:

public function update_post() {
    $data = [
        'title' => $this->input->post('title'),
        'description' => $this->input->post('desc'),
        'content' => $this->input->post('body')
    ];
    $this->db->where('id', $this->input->post('id'));
    return $this->db->update('posts', $data);
}

В контроллере сообщений у меня есть 2 способа редактирования и обновления сообщения:

public function edit($id) {
    $data = $this->Static_model->get_static_data();
    $data['post'] = $this->Posts_model->get_post($id);
    $data['tagline'] = 'Edit the post "' . $data['post']->title . '"';
    $this->load->view('partials/header', $data);
    $this->load->view('edit');
    $this->load->view('partials/footer');
}

public function update() {
    $this->Posts_model->update_post();
    // Redirect to the updated post

}

В моем методе update () я не смог перенаправить на обновленный пост. Строка redirect($this->agent->referrer()); возвращает меня только к форме обновления . Я хочу перенаправить на только что обновленное сообщение . Как мне это сделать?

1 Ответ

0 голосов
/ 27 апреля 2018

Post Vars должны обрабатываться в вашем контроллере:

public function update() {
    $id = $this->input->post('id');
    $data = [
        'title' => $this->input->post('title'),
        'description' => $this->input->post('desc'),
        'content' => $this->input->post('body')
    ];
    // Update post
    $this->Posts_model->update_post($id, $data);
    // Redirect to the updated post
    redirect('posts/post/' . $id);
}

Модель:

public function update_post($id, $data) {
    $this->db->where('id', $id);
    return $this->db->update('posts', $data);
}

Примечание: если вы хотите сделать это по-своему, просто верните идентификатор в функции модели и перенаправьте на основе возврата функции в update()

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