0

私は現在、ユーザーが小さなユーザー領域にメモのスニペットを保存できるプロジェクトに取り組んでいます。

たとえば、ユーザーが http://mysite.com/view/1にアクセスし、id に関連するすべてのデータが表示される 1 のメモ スニペットがある場合、アイテムの ID が存在するかどうかをどのように確認するのか疑問に思っていました1。ユーザーが URL を 1000 に変更すると、その ID は存在せず、ビューはエラーになります。

「スニペットが存在しません」などのエラーメッセージで特定のページにリダイレクトできるようにしたい.

私がこれまでに持っているものは次のとおりです(現在、スニペットがプライベートであるかどうかを確認するための条件文がすでにここにあり、/ publicsnippets にリダイレクトされている場合)

コントローラ:

class Publicsnippets extends CI_Controller {

function __construct()
{
    parent::__construct();

    if (!$this->tank_auth->is_logged_in()) {
        redirect('/login/');
    } 

    $this->load->model('dashboard_model');

    $this->data['user_id']  = $this->tank_auth->get_user_id();
    $this->data['username']= $this->tank_auth->get_username();  
}

public function index()
{
    $this->data['public_snippets']  = $this->dashboard_model->public_snippets();
    $this->load->view('dashboard/public_snippets', $this->data);
}

public function view($snippet_id)
{
    $snippet = $this->dashboard_model->get_snippet($snippet_id);

    if ($snippet['state'] === 'private')
    {
        $this->session->set_flashdata('message', "<b style=\"color:red;\">You are not allowed to view this snippet!</b>");
        redirect('/publicsnippets');

    } else {

        $this->data['snippet'] = $snippet;
    }

    $this->load->view('dashboard/view_public_snippet', $this->data);

}

}

モデル:

    class Dashboard_model extends CI_Model {

public function public_snippets()
{
    $this->db->select('id, title, description, tags, author, date_submitted');
    $query = $this->db->get_where('snippets', array('state' => 'public'));
    return $query->result_array();
}

public function private_snippets()
{
    $this->db->select('id, title, description, tags, author, date_submitted');
    $query = $this->db->get_where('snippets', array('user_id' => $this->tank_auth->get_user_id()));
    return $query->result_array();
}

public function add_snippet($data)
{
    $this->db->insert('snippets', $data);
    $id = $this->db->insert_id();
    return (isset($id)) ? $id : FALSE;
}

public function get_snippet($snippet_id) {

    $query = $this->db->get_where('snippets', array('id' => $snippet_id));  
    return $query->row_array();
}

public function update_snippet($snippet_id, $data)
{
    $this->db->where('id', $snippet_id);
    $this->db->update('snippets', $data);
}

public function delete_snippet($snippet_id)
{
    $this->db->where('id', $snippet_id);
    $this->db->delete('snippets');
}


    }

意見:

        <h3>Description</h3>
        <p><?php echo $snippet['description']; ?></p>

        <h3>Tags</h3>
        <p><?php echo $snippet['tags']; ?></p>

        <h3>Date Submitted</h3>
        <p><?php echo $snippet['date_submitted']; ?></p>

        <h3>Snippet</h3></pre>
        <pre class="prettyprint"><?php echo $snippet['code_snippet']; ?></pre>
4

2 に答える 2