dropBox 在表单中不可见 - CakePHP-AjaxMultiUpload

dropBox is not visible in the form - CakePHP-AjaxMultiUpload

我正在使用 CakePHP-AjaxMultiUpload Plugin,并且在 edit.ctp 中有以下代码,但是这里看不到下拉框。

<div class="useTypes form">

<?php echo $this->Form->create('UseType'); ?>

    <fieldset>
        <legend><?php echo __('Edit Use Type'); ?></legend>
    <?php
        echo $this->Form->input('id');
        echo $this->Form->input('name');
        echo $this->Form->input('description');
        echo $this->Upload->edit('UseType', $this->Form->fields['UseType.id']);
    ?>
    </fieldset>

<?php 
echo $this->Form->end(__('Submit')); ?>
</div>

但是当我单独使用下面的代码时,它是可见的

<?php echo $this->Upload->edit('UseType', $this->Form->fields['UseType.id']);?>

我在带有默认主题的 cakephp 2.6 中试过这个。

您不应该将 $this->Upload->edit() 包裹在 <form> 标签中,因为它已经创建了自己的表单。

您可能还需要更换:

$this->Form->fields['UseType.id']

与:

$this->Form->value('UseType.id')

总而言之,这应该有效:

<?php echo $this->Form->create('UseType'); ?>
    <fieldset>
        <legend><?php echo __('Edit Use Type'); ?></legend>
        <?php
            echo $this->Form->input('id');
            echo $this->Form->input('name');
            echo $this->Form->input('description');
        ?>
    </fieldset>
<?php echo $this->Form->end(__('Submit')); ?>

<?php echo $this->Upload->edit('UseType', $this->Form->value('UseType.id'));?>

编辑

如果您需要在 /use_types/add 视图中上传文件,您可以执行以下操作。

UseTypeController::add()中包括:

$this->set('id',CakeText::uuid()); //String::uuid() for CakePHP 2.6 or lower 

并在 /app/View/UseTypes/add.ctp 中:

<?php echo $this->Form->input('id',array('type' => 'hidden', 'value' => $id)); ?>

缺点是如果您在通过 AJAX 上传文件后未能保存您的模型,这些将被孤立。