Php 选择另一个多选中的选项时选择多个选项

Php 选择另一个多选中的选项时选择多个选项,php,jquery,ajax,cakephp,Php,Jquery,Ajax,Cakephp,我正在导入一个CSV文件,并将其添加到我的数据库表中。在下一页中,我想向刚刚插入到表中的数据添加信息。此数据将插入import\u map表中 当选择Table1模型选项时,它将根据map\u表,使用Ajax在Table2模型选择框中选择选项。我不能只在map\u表中创建id字段,然后将其插入import\u map表中,因为用户可以在Table2Model选择框中选择与table1无关的选项 我的想法是用add()方法中的选定值构建一个数组。但问题是它似乎没有击中add()方法的if($thi

我正在导入一个CSV文件,并将其添加到我的数据库表中。在下一页中,我想向刚刚插入到表中的数据添加信息。此数据将插入
import\u map
表中

当选择Table1模型选项时,它将根据
map\u表
,使用Ajax在Table2模型选择框中选择选项。我不能只在
map\u表中创建
id
字段,然后将其插入
import\u map
表中,因为用户可以在Table2Model选择框中选择与
table1
无关的选项

我的想法是用
add()
方法中的选定值构建一个数组。但问题是它似乎没有击中
add()
方法的
if($this->request->is('ajax'))
部分。至少,当一个选项被选中时,它不会做任何事情

映射表

+-------------+-------------+
| `table1_id` | `table2_id` |
+-------------+-------------+
| 1           | 1           |
+-------------+-------------+
| 1           | 2           |
+-------------+-------------+
| 2           | 1           |
+-------------+-------------+
表1

+------------------+
| `id` | `name`    |
+------+-----------+
| 1    | Table_1_1 |
+------+-----------+
| 2    | Table_1_2 |
+------+-----------+
表2

+------------------+--------------+
| `id` | `name`    | `url`        |
+------+-----------+--------------+
| 1    | Table_2_1 | example.com  |
+------+-----------+--------------+
| 2    | Table_2_2 | example2.com |
+------+-----------+--------------+
进口

+------------------+---------+--------+------------+
| `id` | `country` | `month` | `year` | `imported` |
+------+-----------+---------+--------+------------+
| 1    | USA       | 05      | 2016   | 0          |
+------+-----------+---------+--------+------------+
| 2    | CAN       | 08      | 2015   | 0          |
+------+-----------+---------+--------+------------+
导入地图

+-------------+---------+
| `id`        | int(11) |
| `table1_id` | int(5)  |
| `table2_id` | int(5)  |
| `import_id` | int(7)  |
+-------------+---------+
导入控制器

<?php

App::uses('AdminController', 'Controller');

/**
 * Class ImportController
 */
class ImportController extends AdminController
{
    public $components = array('RequestHandler');

    public function add()
    {
        $importedIds = $this->Session->read('importedIds');
        if(!isset($importedIds))
        {
            $this->redirect(array('action' => 'index'));
        }

        if($this->request->is('post'))
        {
            # Save logic here
        }

        $this->loadModel('Table1Model');
        $table1 = $this->Table1Model->find('list', array(
            'fields' => array(
                'id',
                'name'
            ),
            'order' => 'name ASC'
        ));
        $this->set('table1', $table1);

        $this->loadModel('Table2Model');
        $table2 = $this->Table2Model->find('list', array(
            'fields' => array(
                'id',
                'name'
            ),
            'order' => 'name ASC'
        ));

        $selectedTable2Ids = array();
        if($this->request->is('ajax'))
        {
            # Build what options to select.
            foreach($this->request['data']['Table1Model']['table1_ids'] as $table1)
            {
                $selectedTable2Ids = '';
            }
        }

        $this->set('table2', $table2);
        $this->set('selectedTable2Ids', $selectedTable2Ids);

        $this->render('add');
    }
}

#在这里加载jQuery
$(文档).ready(函数(){
$(“#表1”)。在('click',function()上{
var id=$(this.val();
如果(ID){
$.ajax({
url:“”,
数据:{table1_id:ids},
cache:false,
键入:“POST”,
数据类型:“JSON”,
成功:功能(数据){
$('#表2').html(数据);
}
});
}
});
});

我称之为链式下拉列表,您可以找到一个示例。源代码也可用。我称之为链式下拉列表,您可以找到一个示例。还提供了源代码。
<?php

App::uses('AppModel', 'Model');

/**
 * Class Import
 */
class Import extends AppModel
{
    public    $useTable    = 'import';
    public    $hasMany     = array(
        'ImportMap' => array(
            'class' => 'ImportMap',
            'foreign_key' => 'import_id'
        )
    );
}
<?php

App::uses('AppModel', 'Model');

/**
 * Class ImportMap
 */
class ImportMap extends AppModel
{
    public $belongsTo = array(
        'Import' => array(
            'class' => 'Import',
            'foreign_key' => 'id'
        ),
        'Table1',
        'Table1'
    );
}
<?php

App::uses('AppModel', 'Model');

/**
 * Class Table1
 */
class Table1 extends AppModel
{
    public $useTable = 'table1';
    public $hasMany  = array(
        'MapTable',
        'ImportMap'
    );
}
<?php

App::uses('AppModel', 'Model');

/**
 * Class Table2
 */
class Table2 extends AppModel
{
    public $useTable = 'table2';
    public $hasMany  = array(
        'MapTable',
        'ImportMap'
    );
<?php echo $this->Form->create('MapTableModel'); ?>
    <div>
        <div class="form-group">
            <div class="input-group">
                <?php
                echo $this->Form->input('Table1Model.table1_id', array(
                    'id' => 'table1',
                    'required' => false,
                    'multiple' => 'multiple',
                    'type' => 'select',
                    'class' => 'form-control',
                    'label' => false,
                    'options' => $table1
                ));
                ?>
            </div>
        </div>
    </div>

    <div>
        <div class="input-group">
            <?php
            echo $this->Form->input('Table2Model.table2_id', array(
                'class' => 'form-control',
                'required' => false,
                'type' => 'select',
                'multiple' => 'multiple',
                'id' => 'table2',
                'label' => false,
                'options' => $table2,
                'default' => $selectedTable2Ids
            ));
            ?>
        </div>
    </div>
<?php echo $this->Form->end('Add'); ?>

# Loading jQuery here
<script type="text/javascript">
$(document).ready(function() {
    $("#table1").on('click', function() {
        var ids = $(this).val();
        if (ids) {
            $.ajax({
                url: '<?php echo Router::url(array("controller" => "import", "action" => "add"), true); ?>',
                data: {table1_ids: ids},
                cache: false,
                type: 'POST',
                dataType: 'JSON',
                success: function (data) {
                    $('#table2').html(data);
                }
            });
        }
    });
});
</script>