1

我有一个用于我的特定视图的默认表单。

通过一个元素,我(动态地)包含另一个视图(使用视图扩展)以提供上传表单。

我的问题是第二个表格似乎提交了第一个表格。

默认形式

<div class="content-box-content">
        <?php
            echo $this->Form->create("WebSubject", array(
                'inputDefaults' => array(
                    'error' => array(
                        'attributes' => array(
                            'wrap' => 'span', 
                            'class' => 'input-notification error png_bg'
                        )                   
                    )
                )
            ));
        ?>

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

        <?=$this->Form->input('title', array('class' => "text-input small-input", 'label' => 'Denumire'))?>

        <?=$this->Form->input('description', array('type' => 'textarea', 'label' => 'Descriere', 'id' => 'description'))?>

        <?=$this->Form->input('description_long', array('type' => 'textarea', 'label' => 'Continut', 'id' => 'description_long'))?>

        <?=$this->Form->submit('Salveaza', array('class' => "button"))?>
    </div>

这样我就包含了元素

<div class="tab-content default-tab" id="fotoUploadTab">
            <?php
                echo $this->element('file_upload_form', array(
                        'view' => 'upload_admin',
                        'webFileType' => 'image',
                        'redirect' => $SHT['here']
                    )
                );
            ?>
            <div class="tab-content default-tab">
                Lista imagini
            </div>
        </div>

元素代码

<?php
    $view = (isset($view)) ? $view : "upload_admin";
    $webFileType = (isset($webFileType)) ? $webFileType : "image";
    $redirect = (isset($redirect)) ? $redirect : "/";
?>
<?php 
    $this->extend("/WebFiles/".$view);   
?>

扩展视图代码

<div class="tab-content default-tab">

    <?php echo $this->Form->create("WebFile", array('action' => '/', 'type' => 'file')); ?>

    <input type="hidden" name="redirect" value="" />
    <?php echo $this->Form->input('entity_id', array('type' => 'hidden')); ?>
    <?php echo $this->Form->input('entity_table_name', array('type' => 'hidden')); ?>
    <?php echo $this->Form->input('type', array('type' => 'hidden')); ?>

    <?php echo $this->Form->input('title', array('class' => "text-input small-input", 'label' => 'Denumire')); ?>   
    <?php echo $this->Form->input('description', array('class' => "text-input small-input", 'label' => 'Descriere')); ?>
    <?php echo $this->Form->submit('Upload', array('class' => 'button')); ?>

</div>

正如在最后一个片段中看到的,我试图通过提供一个动作 url 来强制使用最后一个表单,但是在提交它时,它会像第一个那样发送数据。

我应该如何处理?

谢谢!

4

1 回答 1

3

如果您只想同时拥有这两种表单,则一个来自父视图/元素,另一个来自子视图/元素,请确保您在两个模板中调用 $this->Form->end() 并且您没有在另一个中嵌套表单. 在您的情况下,可能只需将 end() 添加到两种形式即可解决您的问题。

作为旁注,您不能让父视图使用 $this->Form->create() 打开表单并使用子视图将字段注入其中,主要是因为您需要在呈现任何输入之前调用 create()父视图在子视图执行后呈现。

于 2012-08-02T17:50:20.093 回答