Отправка значений через URL и перенаправление на другой URL - PullRequest
0 голосов
/ 29 января 2019

Я работаю над датой в codeigniter.Я хочу обновить значения в datatable.Я застрял ниже, мой код.

ниже мой код представления, в котором после нажатия кнопки редактирования я передал значение идентификатора моей функции edituser в приложении контроллера.

<table id="user_table" class="display">
<thead>
 <td>Id</td>
 <td>Email</td>
 <td>Password</td>
 <td>Action</td>
</thead>
<tbody>    
 <?php 
 foreach ($rows as $row)
 {
   ?>
 <tr>
  <td>
   <?= $row->id ?>
  </td>      
  <td>
   <?= $row->email ?>
  </td>
  <td>
   <?= $row->password ?>
  </td>

  <td>
<a href="app/edituser/<?php echo $row->id ?>"><button id="btn_edit_user" type="button" class="btn btn-primary">Edit</button></a>
</td>
</table>

так чтовозвращает страницу 404 с этим URL "http://localhost/website/app/app/edituser/1" он возвращает идентификатор, но я хочу перенаправить на другую страницу через мой контроллер.

Ниже приведен код моего контроллера.

public function edituser(){ 
    $user_id = $this->uri->segment(3);
    //$user_id = $this->input->post("user_id");

    if(!empty($user_id)){
        $data["page"] = "edituser";
        $data["row"] = $this->crud->read_row("*", "user", array("id" => $user_id));
    }
    else{
        $data["page"] = "404";
    }

    $this->load->view("app/index", $data);
}

Ответы [ 4 ]

0 голосов
/ 29 января 2019

Я не получаю актуальный вопрос здесь.Чтобы это работало, вам нужно иметь файл .htaccess с включенным mod_rewrite на вашем сервере Apache, который, я полагаю, у вас есть.При использовании таких URL-адресов у вас должен быть некоторый класс URIDispatcher, чтобы четко видеть каждую деталь из запрошенного URL-адреса.Итак, дело в том, что вы должны проверить несколько вещей, а затем исправить их в зависимости от того, как ваш код отвечает на них:

Правильно ли сформирован URI?

Прежде всего, на вашем контроллересценарий, проверьте, если REQUEST_URI, чтобы увидеть, все ли правильно, в начале сценария введите:

<?php

die($_SERVER['REQUEST_URI']);

URI правильно сформирован?Извлеките идентификатор

Поскольку вы используете URL без параметров (base_uri?id=1), давайте используем метод explode() для разделения URI отверстия:

$uri_array = explode('/', $_SERVER['REQUEST_URI']);

Поскольку ваш URI/website/app/app/edituser/1, теперь у вас будет массив с позицией 0, содержащий пустую строку.Это нормальное поведение, просто используйте $final_uri_array = array_filter($uri_array);. Обратите внимание, что array_filter () удаляет идентификатор, если он равен нулю. .Если все идет хорошо, идентификатор должен быть в $final_uri_array[4].Теперь давайте проверим ваш контроллер.

Проверка значения и перенаправление

Ваш код на вашем контроллере может выглядеть примерно так:

<?php

//Your stuff

public function edituser(){
  $final_uri_array = array_filter( explode('/', $_SERVER['REQUEST_URI']) );

  if(sizeof($final_uri_array) < 5){
    //400 Bad request
    http_response_code(400);
  } else {
    /*
     * Check ID existence from your database
     * Should look womething like this
     */
    $user_id = intval($final_uri_array[4]);
    $user_data = $database->search($user_id);
    if($user_data->num_rows > 0){
      //If the user was found, redirect to a page
      header('Location: /your/edit/view/uri');
    } else {
      //404 Not found
      http_response_code(404)
    }
  }

}

//More stuff
0 голосов
/ 29 января 2019

Попробуйте это: id?> "> Изменить ИЛИ id ');?>"> Изменить

0 голосов
/ 29 января 2019
<a href="**<?php echo base_url().index_page()."/app/edituser/".$row['id']?>**">
   <button id="btn_edit_user" type="button"class="btn btn-primary">
     Edit
   </button>
</a>

IN controller you can access this like

function edituser($id=''){
 "your query"
}
0 голосов
/ 29 января 2019

Добавьте URL-помощник в application/config/autoload.php файл, подобный этому

$autoload['helper'] = array('url');

Если вы правильно создали файл .htaccess и index.php удален из вашего URL.

А теперьиспользуйте base_url() для вызова функции контроллера из представления

<a href="<?= base_url('app/edituser/'.$row->id)"><button id="btn_edit_user" type="button" class="btn btn-primary">Edit</button></a>

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