Как обработать форму с CodeIgniter

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

Таким образом, все открыто и честно, и они с меньшей вероятностью будут вручную отмечать его как спам .

13
задан Sampson 18 February 2010 в 16:24
поделиться

4 ответа

Файл просмотра бесполезен, если контроллер не загрузит и не отобразит его. Вы должны создать контроллер, чтобы получать данные формы, обрабатывать их, а затем отображать результат процесса.

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

<?php echo form_open('form/search'); ?>
<input type="text" name="search" value="" size="50" />
<div><input type="submit" value="Submit" /></div>
<?php echo form_close(); ?>

Без использования помощника формы вы все равно можете написать его так:

<form action="<?php echo site_url('form/search'); ?>">

Затем добавьте поиск метод в форму controller:

function search()
{
  //get form field
  $search = $this->input->post('search');
  // do stuffs here
  //...
}

Помните, что CI помогает вам только с базовой организацией кода и предоставляет полезную библиотеку и помощник. Но вам еще нужно написать алгоритм процесса у себя на сайте.

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

10
ответ дан 1 December 2019 в 18:06
поделиться

Попробуйте использовать codeigniter 'site_url' в своих действиях, чтобы убедиться, что вы указываете в нужном месте. Действие в вашем примере перешло бы к контроллеру «поиска», а не к контроллеру «формы».

<html>
<head>
<title>Search</title>
</head>
<body>
<form action="<?= site_url('form/process_search') ?>">
<input type="text" name="search" value="" size="50" />
<div><input type="submit" value="Submit" /></div>
</form>
</body>
</html>

index используется в вашем контроллере только тогда, когда ничего не передается .. Итак, в случае с моим примером выше вам нужно что-то вроде этого:

function Form()
{
    parent::Controller();   
}

function process_search()
{   

     print "<pre>";

     print_r($_POST);

     print "</pre>";
}
0
ответ дан 1 December 2019 в 18:06
поделиться

В M .odel V .iew C . Настройки контроллера, такие как CodeIgniter, представления являются элементами пользовательского интерфейса. На них не должно быть результатов синтаксического анализа.

Если я не ошибаюсь, вы хотите передать данные с www.yoursite.com/index.php/form на www.yoursite.com/index.php/ search

В неструктурированном php у вас может быть form.html с действием формы search.php . Пользователь перейдет на yoursite.com/form.html , который вызовет yoursite.com/search.php , который может перенаправить на yoursite.com/results.php. .

В CodeIgniter (и, насколько я понимаю, в любой системе MVC, независимо от языка) ваш Контроллер , Форма вызывает функцию, которая загружает форму .html Просмотреть в себе , а затем запустить его. Представление генерирует код (обычно HTML, но не обязательно), с которым взаимодействует пользователь. Когда пользователь делает запрос, который представление не может обработать (запросы дополнительных данных или другой страницы), он передает этот запрос обратно в контроллер, который загружает дополнительные данные или другое представление.

Другими словами, вид определяет, как будут отображаться данные. Контроллер сопоставляет запросы с представлениями.

Это немного усложняется, когда вы хотите, чтобы в представлении отображались сложные и / или изменяющиеся данные.Чтобы сохранить разделение проблем , которое требует MVC, CodeIgniter также предоставляет вам модели .

Модели отвечают за самую сложную часть любого веб-приложения - управление потоком данных. Они содержат методы для чтения данных, записи данных и, что наиболее важно, методы для обеспечения целостности данных. Другими словами, Модели должны:

  • Убедиться, что данные имеют правильный формат.
  • Убедитесь, что данные не содержат ничего (вредоносного или иного), которое могло бы нарушить среду, для которой они предназначены.
  • Обладать методами для C .reading, R .eading, U .pdating и D .eleting data в рамках вышеупомянутых ограничения.

Акелос имеет хорошее графическое представление компонентов MVC:

Request - Response
(источник: akelos.org )

При этом самый простой (читай «самый простой», а не "наиболее расширяемый") способ выполнить то, что вы хотите:

function Form()
{
    parent::Controller();   
}

function index()
{   
        $this->load->view('form');
}

function search()
{
        $term = $this->input->post('search');
        /*
            In order for this to work you will need to 
            change the method on your form.
            (Since you do not specify a method in your form, 
            it will default to the *get* method -- and CodeIgniter
            destroys the $_GET variable unless you change its 
            default settings.)

            The *action* your form needs to have is
            index.php/form/search/
        */

        // Operate on your search data here.
        // One possible way to do this:
        $this->load->model('search_model');
        $results_from_search = $this->search->find_data($term);

        // Make sure your model properly escapes incoming data.
        $this->load->view('results', $results_from_search);
}
32
ответ дан 1 December 2019 в 18:06
поделиться

На Nettuts есть отличный учебник по CodeIgniter для формы Login. Следуйте скринкасту, и он прояснит ваши вопросы.

http://net.tutsplus.com/videos/screencasts/codeigniter-from-scratch-day-6-login/

0
ответ дан 1 December 2019 в 18:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: