контроллер php codeigniter не выполняет действие после post

#php #forms #codeigniter #redirect

#php #формы #codeigniter #перенаправление

Вопрос:

У меня есть форма, которая отправляет поисковый запрос на мой контроллер поиска:

 <div id="search_box">
<?php echo form_open('search'); ?>
<?php echo form_input('searchvalue', 'search...'); ?>
<?php echo form_submit('submit', 'Search!'); ?>
<?php echo form_close(); ?>
</div>
 

В моем контроллере поиска у меня есть следующий код:

   public function index()
    {
           $page = 'search';
        $category = 'search';

         if($this->input->post('searchvalue')) {
                  redirect('search/query');
         };


......

}
 

Моя проблема в том, что он не будет выполнять перенаправление. У меня загрузился помощник формы. Что я могу сделать, чтобы решить эту загадку. Это случай для бэтмена?

Комментарии:

1. Он должен выполнять перенаправление, однако это может не делать то, что вы думаете. Как вы передаете searchvalue новому контроллеру, например? Кроме того, вам следует выполнить перенаправление get после публикации, см. Этот патч CI: github.com/EllisLab/CodeIgniter/pull/338

2. Почему вы по умолчанию передаете их индексной функции контроллера только для перенаправления их в функцию запроса того же контроллера? Почему бы просто не отправить представление поиска в саму функцию запроса?

Ответ №1:

В Codeigniter, если вы запрашиваете переменную POST из входного класса, она вернет значение или FALSE, если значение пустое (личный опыт) или не найдено.

Так что, возможно, вместо этого введите скрытое поле с фиктивным значением и просто проверяйте это при каждой отправке. Затем вы можете выполнить проверку и перенаправление. Затем это будет работать, если поисковый запрос предоставлен или нет.

И ; после вас if недопустимый PHP.

Например:

 <div id="search_box">
<?php echo form_open('search'); ?>
<?php echo form_hidden('mysearchform', 'true'); ?>
<?php echo form_input('searchvalue', 'search...'); ?>
<?php echo form_submit('submit', 'Search!'); ?>
<?php echo form_close(); ?>
</div>

public function index() {

$page = 'search';
$category = 'search';

if($this->input->post('mysearchform') != FALSE) {

    // Remember to Validate your Query

    redirect('search/query');
}

}
 

Надеюсь, я правильно понял.

Комментарии:

1. Попробовал приведенный выше код, и он все еще не работает, хммм … он должен работать …. есть идеи???

2. Может быть, попробовать <?php echo form_open(‘search/index’); ?> в противном случае я немного в тупике.

3. И обязательно проверьте, используя что-то вроде инструментов веб-разработчика Chrome, чтобы увидеть, где и что на самом деле отправляется.

4. Обнаружена проблема. По какой-то причине, я еще не понял, почему, мой файл htaccess блокировал отправку форм. За этим последует тщательное расследование..