2013-04-24 2 views
0

У меня очень маленькое приложение, оно требует идентификатора, а затем обновляет таблицу базы данных на основе этого идентификатора. Идентификатор - это вход из представления.Как получить доступ к данным, отправленным из представления в контроллере?

В основном моя БД (модель) имеет getAllProjects() и approveProject($id).

Контроллер:

<?php if (!defined('BASEPATH')) exit ('No direct script access allowed'); 

class ApproveProject extends CI_Controller { 

    public function index() { 
     $this->loadView(); 
    } 

    public function getData() { 
     $this->load->model("db_Projects"); 
     $this->db_Projects->getAllProjects(); 

    } 

    public function updateDB() { 
     // how can I get this variable? 
     $this->db_Projects->approveProject($toApprove); 
    } 

    public function loadView() { 
     $this->load->view("ViewProjectApproval"); 
    } 
} 

?> 

Вид:

<html language="en"> 
<head> 
    <title>Aprobare Proiect</title> 
</head> 
    <h1> Aprobare Proiect </h1> 
<body> 
<div id="container"> 

    <?php 
     if (isset($_POST['projectSubmit']) && ($_POST['projectSubmit'] == "Submit")) 
     { 
      $toApprove= $_POST['projectId']; 
     } 
    ?> 


    <form action ="updateDB" method="post"> 
     <input type="text" name="projectId"> 
     <input type="submit" name="projectSubmit" value="Submit"> 
    </form> 


</div> 

</body> 

Я понятия не имею, если моя точка зрения хорошо, или если оно должно быть иначе ... как я могу отправить ID для моего контроллера?

ответ

1

Вы отправляете форму с помощью POST метод, так что вы можете получить переменную из POST внутри метода вашего контроллера, как

$toApprove = $this->input->post('projectId'); 

Таким образом, ваш метод/функция будет выглядеть что-то вроде этого

public function updateDB() { 
    if($this->input->post('projectId')) 
    { 
     $toApprove = $this->input->post('projectId'); 
     // load the model and call the method, like 
     $this->load->model('model_name'); 
     $model_name->method_name($toApprove); 
    } 
} 

Обновление: Ваша форма action doean't выглядит правильно, попробуйте это (имя_контроля/имя_пользователя)

<form action ="<?php echo site_url('ApproveProject/updateDB') ?>" method="post"> 
+0

Я пробовал это, не работал. Поэтому я прокомментировал 'updateDB' и оставил« echo »Test»; 'однако это не появилось. Любая идея, должен ли я опубликовать обновленный код на всякий случай? – Kalec

+0

Обнаружена проблема: она никогда не входит в предложение if – Kalec

+1

Я думаю, что вспомнить, что Code Igniter разрушает суперглобалы, поэтому доступ к ним в контроллере не работает без дополнительной настройки. Но они, возможно, изменили это с помощью CI 2. – Gordon

Смежные вопросы