CakePHP根据数据发送表单

时间:2015-02-04 19:10:50

标签: forms cakephp cakephp-model

您好我对cakephp相当新,我刚刚完成了两个教程hehehe但现在我正在研究它并且我有一个注册表单,我注册了一个用户,但是根据用户的类型,将显示更多模型并将其发送到控制器进行注册。我想知道哪个是最佳做法?是以单独的形式进行,还是根据用户类型发送信息?

这是我的观点:

<?php echo $this->Form->create('User', array('type' => 'file')); ?>
<fieldset>
    <legend><?php echo __('Add User'); ?></legend>
    <?php
        echo $this->Form->file('User.user_image');
        echo $this->Form->input('User.name', array( 'label' => 'Nombre' ));
        echo $this->Form->input('User.last_name', array( 'label' => 'Apellidos' ));
        echo $this->Form->input('User.email', array( 'label' => 'E-Mail' ));
        echo $this->Form->input('User.password', array( 'label' => 'Contraseña' ));
        echo $this->Form->input('User.phone', array( 'label' => 'Telefono' ));
        //echo $this->Form->input('created_ip_connection');
        //echo $this->Form->input('last_ip_connection');
        echo $this->Form->input('User.group_id', array('empty' => 'Elige un rol',  'label' => 'Rol de Usuario'));
    ?>
    <div style="display: none;" id="companyAdd">
        <legend><?php echo __('Datos de Compañia'); ?></legend>
        <?php
            echo $this->Form->input('Address.exterior_number', array( 'label' => 'Numero Exterior' ));
            echo $this->Form->input('Address.internal_number', array( 'label' => 'Numero Interior' ));
            echo $this->Form->input('Address.street', array( 'label' => 'Calle' ));
            echo $this->Form->input('Address.suburby', array( 'label' => 'Colonia' ));
            echo $this->Form->input('Address.country_id', array('empty' => 'Selecciona País', 'label' => 'Pais'));
            echo $this->Form->input('Address.state_id', array('empty' => 'Selecciona País', 'label' => 'Estado'));
            echo $this->Form->input('Address.city_id', array('empty' => 'Selecciona Estado', 'label' => 'Municipio'));
            echo $this->Form->input('Company.name', array( 'label' => 'Nombre de Compañia' ));
            echo $this->Form->input('Company.description', array( 'label' => 'Descripción de Compañia' ));
            echo $this->Form->input('Company.bank_acc', array( 'label' => 'Cuenta de Banco' ));
            echo $this->Form->input('Company.rfc', array( 'label' => 'RFC' ));
        ?>
    </div>
    <div style="display: none;" id="userAdd">
        <legend><?php echo __('Datos de Comprador/Proveedor'); ?></legend>
        <?php
            echo $this->Form->input('Buyer.company_id', array('empty' => 'Elige Comapñia', 'label' => 'Compañia'));
        ?>
    </div>
</fieldset>

<?php echo $this->Form->end(__('Registrar')); ?>

在此情况下,如果用户具有某个group_id,则可以看到companyAdd div进行编辑,如果另一个则显示userAdd div,如果是管理员,则仅发送用户的信息。当我尝试提交此表单时,表单不会让我导致公司和用户的输入是必要的。如何根据用户的group_id控制发送哪些数据?

模型如下

用户hasOne买家 用户hasOne Provider(NormalUsers) 用户hasOne Comapny

顺便说一下,Comapny也有一个地址,这就是为什么Address是另一个模型

在控制器中我正在考虑使用saveAll或每个模型发送的保存。

任何建议或教程我都可以看到它是如何制作的?还是最佳做法?

0 个答案:

没有答案