Не загружается представление методом вызова - PullRequest
0 голосов
/ 26 февраля 2019

Я создал пользовательскую таблицу, которая будет ссылаться на его сообщения, когда он отправляет сообщение.(Это работает правильно)

Итак, я пытался создать метод в codeigniter 3. Я установил его на то, где, если пользователь вошел в систему и щелкнул его имя пользователя, он покажет все свои представления,просто извлекая из таблицы его user_id, а затем перебирая его сообщения.

Ну, у меня есть две проблемы


, когда я вхожу в URL, чтобы вызвать эту функцию, она хочет получить значение дляУри.Пример: localhost / CI / controller / account, но он не будет загружаться, пока я не добавлю что-то после account (account - имя метода).

Как localhost / CI / controller / account / 9

Кроме того, эта функция, похоже, тоже не работает по какой-то причине, я не знаю, имеет ли она какое-то отношение к этому желанию получить другое значение.

Я исследовал это в течение последнего часа без удачи.

Контроллер:

    public function account(){

      $data['title'] = 'Your submissions';

      $data['posts'] = $this->post_model->user_posts();

      $this->load->view('templates/header');
      $this->load->view('users/profile', $data);
      $this->load->view('templates/footer');

    }

//view function the post by clicking on title

public function view ($slug=NULL){
  $data['post'] = $this->post_model->get_posts($slug);
  $post_id = $data['post']['id'];
  $data['comments'] = $this->comment_model->get_comments($slug);


  if(empty($data['post'])){
    show_404();
  }
$data['title'] = $data['post']['title'];

$this->load->view('templates/header');
$this->load->view('posts/view', $data);
$this->load->view('templates/footer');


}

Модель:

public function user_posts (){


  $usernum = $this->session->userdata('customer_id');
  $this->db->order_by('created_time','DESC');
  $query = $this->db->get_where('posts',array('customer_id ='=>'$usernum'));
  return $query->result_array();


}
$query = $this->db->get_where('posts',array('slug'=>$slug));
  return $query->row_array();
}

Просмотр:

<?php

echo $title;

foreach ($posts as $post): {

echo $post['title'];

}endforeach;


 ?>

Ответы [ 4 ]

0 голосов
/ 26 февраля 2019

Я не знаю, как настроено ваше нажатие кнопки, но именно так вы должны это сделать.

Страница нажатия кнопки

<?= site_url(); ?>controller_name/account

учетная записьфункция в контроллере

function account(){
//1. Check if user is Logged in
if (!$this->ion_auth->logged_in())
{
    //If they are not logged in, redirect them to login page or do something
}
else{
    //User is logged in so get submissions

    //Get all submissions
    $data['title'] = 'Your submissions';
    $this->data['posts']=  $this->post_model->user_posts();

    $this->load->view('templates/header');
    $this->load->view('users/profile', $data);
    $this->load->view('templates/footer');
}}

Функция сообщений пользователя в модели

function user_posts (){
    $user = $this->ion_auth->user()->row();
    $ref_id=$user->id; //Gets you user id
    $this->db->where(['customer_id'=>$ref_id]);
    $this->db->order_by('created_time','DESC');
    $query=$this->db->get('posts');
    if($query->result())
    {
        return $query->result();
    }
    else
    {
        return false;
    }}

Также рассмотрите возможность использования Ion Auth для входа в системув codeigniter, поскольку он позволяет вам легко получать доступ к данным сеанса без проблем, с которыми вы столкнулись.

0 голосов
/ 26 февраля 2019

Изменить функцию модели следующим образом

public function user_posts (){
  $usernum = $this->session->userdata('customer_id');
  $this->db->order_by('created_time','DESC');
  $query = $this->db->get_where('posts', array('customer_id' => $usernum));
  return $query->result_array();
}

Ассоциативному массиву не нужно = в where() или get_where() для получения записи

Не нужны одинарные кавычки с$usernum

0 голосов
/ 26 февраля 2019

Попробовав кое-что, это исправило мои проблемы.

Public function user_posts (){


  $this->db->order_by('created_time','DESC');
   $query = $this->db->get_where('posts', array('customer_id' => $this->session->userdata('customer_id')));
  return $query->result_array();


}

Я считаю, что, удалив $usernum = $this->session->userdata('customer_id'); и добавив его в запрос, теперь пользователь может вызывать собственный идентификатор сеанса без необходимостивведите один в функцию.

Спасибо тем, кто дал мне ввод

0 голосов
/ 26 февраля 2019

Контроллер:

public function account($acno = "") {//changes

        $data['title'] = 'Your submissions';
        $data['posts'] = $this->Post_model->user_posts();//changes
        echo'<pre>';print_r($data);die;//changes
        $this->load->view('templates/header');
        $this->load->view('users/profile', $data);
        $this->load->view('templates/footer');
    }

Модель:

public function user_posts() {
        $usernum = $this->session->userdata('customer_id');
        $this->db->order_by('created_time', 'DESC');
        $query = $this->db->get_where('posts', array('customer_id =' => $usernum));//changes
        if ($query->num_rows() > 0) {
            return $query->result_array();
        } else {
            return array();
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...