Сделать форму помнить ранее отправленные значения с CodeIgniter - PullRequest
3 голосов
/ 26 октября 2010

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

Однако есть одна вещь: когда форма загружена, всем полям уже присвоено определенное значение, так, например, «поле имени» показывает «имя» внутри поля. И я хочу, чтобы это оставалось таким, пока «имя» не будет изменено и форма не будет отправлена, в этом случае она должна иметь новое значение.

Итак, на данный момент у меня есть это:

<?php echo form_input('name', 'Name*');?>

<?php echo form_input('email', 'Email*');?>

Но я не знаю, как заставить форму помнить какие-либо новые отправленные значения.

Кто-нибудь есть идеи?

Ответы [ 3 ]

5 голосов
/ 26 октября 2010

Я бы порекомендовал использовать метод CodeIgniter set_value.

<?php echo form_input('name', set_value('name', 'Name*')); ?>
0 голосов
/ 26 октября 2010

Я думаю, что ответ лежит в контроллере.

Лично я начал позволять функции контроллера форм обрабатывать проверку:

<?php

class Page extends Controller
{

    ...

    function showform()
    {
      $this->load->helper(array('form', 'url'));
      $data = array("name" => "Name*", "email" => "Email*");
      $failure = false;

      if( $this->input->post("name") )
      {
        $data["name"] = $this->input->post("name");
        $data["email"] = $this->input->post("email");

        if( !valid_email($data["email"]) )
        {
            $failure = true;
            $data["error_message"] = "E-mail couldn't validate";
        }

        if( !$failure )
             redirect('/page/thankyou/', 'refresh');
      }



        $this->load->vars($data);
        $this->load->view("theform");   

    }

    ...

}

И, на ваш взгляд, вы бы сделали что-то вродеэто:

<?php echo form_input('name', $name);?>
<?php echo form_input('email', $email);?>
0 голосов
/ 26 октября 2010

Если вы отправляете на тот же контроллер, вы можете получить ранее отправленные переменные через $_POST (или $_GET в зависимости от того, какой метод формы вы выбрали).

// use $_POST['name'] if set, else use 'Name*'
<?= form_input('name', (!empty($_POST['name']) ? $_POST['name'] : 'Name*'); ?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...