10/10/2018, 11:22

[Code Igniter] giúp mình vấn đề multi form trong 1 view

mình đag tìm hiểu CI và bị bí vấn đề này : giao diện mình xây dựng bên menu trái có 1 form dùng để search dữ liệu, phần content là form để đặt tour. 2 form này có action là 2 phương thức ở 2 controller khác nhau. Nhưng khi submit form đặt tour thì nó luôn gọi đến action của form search.

Bạn nào có kinh nghiệm vụ này chỉ mình hướng làm với.

Thanks !
danhnguyen223 viết 13:27 ngày 10/10/2018
Thông tin chưa dc rõ ràng, bạn có thể trìh bày rõ hơn?
nnquangit viết 13:34 ngày 10/10/2018
mỗi form có 1 cái key post lên form nào thì làm form ấy.
1cnb07 viết 13:35 ngày 10/10/2018
Cảm ơn 2 bạn, để mình nói rõ hơn, mọi người giúp nhé :
Mình có 1 controller View chứa 2 method sau :
Code:
function search_tour()
    {
        $data['page_title'] = "Tìm kiếm";
        $data['ne'] = $this->view_model->get_all_news_events1();

        if($this->_validate_search() == FALSE) {
            $this->load->view('view/search_result', $data);
        } else {
            $location = $this->input->post('search');
            $data['datas'] = $this->view_model->search_tour($location);
            if($data['datas']->num_rows() == 0) {
                $data['msg'] = 0;
            } else {
                $data['msg'] = $data['datas']->num_rows();
            }
            $this->load->view('view/search_result', $data);
        }         
    }

function do_booking($tour_code)
    {
        $data['ne'] = $this->view_model->get_all_news_events1();
        $data['page_title'] = "Đặt Tour";
        $data['country'] = $this->booking_model->get_all_country();
        $data['tour_info'] = $this->booking_model->get_tour_by_code($tour_code);

        if($this->_validate_booking() == FALSE) {
            $this->load->view('view/do_booking', $data);
        }
    }

//_validate_search() và _validate_booking() là 2 method dùng validate form
Ở file do_booking.php như sau :
Code:
<?php
$this->load->view('header');
$this->load->view('left');
?>
<?php echo form_open("view/do_booking/{$tour_info->row()->tour_code}");?>
<table cellspacing="2" cellpadding="2" width="100%">
//bỏ 1 số code
<tr>
        <td colspan="2" align="center">
            <input type="submit" name="book_tour" id="book_tour" value="Đặt Tour" />
            <?=  form_reset('reset','Nhập lại');?>
        </td>
    </tr>
</table>
<?php form_close();?>

<?php
$this->load->view('right');
$this->load->view('footer');
?>
trong đó file left.php mình có đoạn code :
Code:
<?php echo form_open( "view/search_tour");?>
        <table cellspacing="3" cellpadding="3" width="100%">
           //bỏ 1 số code
            <tr>
                <td colspan="2"><input type="submit" name="s_tour" id="s_tour" value="Tìm kiếm" /></td>
            </tr>
            <tr>
                <td colspan="2"><?php echo form_error('search');?></td>
            </tr>
        </table>
    <?php form_close();?>
Khi mình click button Đặt Tour thì method search_tour lại được gọ mà ko fai method do_booking($tour_code) ? Bây giờ sửa như nào để gọi đúng method nhỉ :-? giúp mình với nhé !
php_code viết 13:28 ngày 10/10/2018
Đơn giản là có 2 form, tức là sẽ có 2 nút submit. Nút submit form 1 tên là ok1, form 2 là ok2.

Ở controller sẽ kiểm tra, if(isset($_POST['ok1'])) { làm cái gì đó }

if(isset($_POST['ok2'])) { làm cái gì đó}

Thân ái.

P/s: có gì có thể pm tôi để trao đổi, nick online321online
1cnb07 viết 13:39 ngày 10/10/2018
cảm ơn bạn đã trả lời, reply của bạn sẽ đúng nếu xử lí cùng chung 1 method, trước mình đã thử để cái check biến post vào method search_ tour() thì code chạy được cái mình muốn hỏi là sao đã để
Code:
<?php echo form_open( "view/search_tour");?>

Code:
<?php echo form_open("view/do_booking/{$tour_info->row()->tour_code}");?>
rồi mà khi form booking dc submit nó lại ko gọi đến method do_booking() vậy ? trên url nó sẽ ra như này
Code:
http://localhost/cooltour/index.php/view/search_tour
mà ko phải
Code:
http://localhost/cooltour/index.php/view/do_booking/tour_code_here
Bài liên quan
0