获取并返回ID以执行“编辑”操作

时间:2013-07-01 02:58:23

标签: symfony1 symfony-1.4

我使用"制表符"制作的模块,每个标签以这种方式调用组件:

include_component('logotipo', 'index');

现在这是组件的代码:

class logotipoComponents extends sfComponents {

    public function executeIndex(sfWebRequest $request) {
        $id_empresa = $this->getUser()->getGuardUser()->getSfGuardUserProfile()->getIdempresa();
        $this->sdriving_logotipo = Doctrine_Core::getTable('SdrivingLogotipo')->createQuery('a')->leftJoin('a.SdrivingEmpresa e')->where('e.idempresa = ?', $id_empresa)->execute();
    }

}

这是模板_index.php

<?php if ($sdriving_logotipo->count() > 0): ?>
    <div class="span3">
        <span class="gris">Vista previa</span>
        <?php echo image_tag('/uploads/' . $sdriving_logotipo[0]->getArchivo()); ?>
    </div>
<?php else: ?>
    <div class="alert alert-block">
        <h4><?php echo __('Información!') ?></h4>
        <?php echo __('No se ha subido ningún logotipo aún. Haga clic en el botón "Subir nuevo" para crear uno.') ?>
    </div>
<?php endif; ?>

此代码工作正常,但我需要更多。我需要做的是更新logotipo上传一个新的logotipo并从文件系统和数据库中删除现有的或只是编辑现有记录和更新值。现在看一下这个schema.yml

SdrivingEmpresa:
  columns:
    idempresa:
      type: integer(4)
      unsigned: true
      primary: true
      autoincrement: true
    idlogotipo:
      type: integer(4)
      unsigned: true
      primary: true
    nombre_empresa:
      type: string(250)
      notnull: true
    ruta_emp:
      type: string(45)
      notnull: true
      autoincrement: false
  relations:
    SdrivingLogotipo:
      local: idlogotipo
      foreign: idlogotipo
      type: one
    SdrivingEmisor:
      local: idempresa
      foreign: idempresa
      type: many
    SdrivingMaquina:
      local: idempresa
      foreign: idempresa
      type: many
    SdrivingOperador:
      local: idempresa
      foreign: idempresa
      type: many
    SdrivingTurno:
      local: idempresa
      foreign: idempresa
      type: many
    SfGuardUserProfile:
      local: idempresa
      foreign: idempresa
      type: many

SdrivingLogotipo:
  columns:
    idlogotipo:
      type: integer(4)
      unsigned: true
      primary: true
      autoincrement: true
    archivo:
      type: string(250)
  relations:
    SdrivingEmpresa:
      local: idlogotipo
      foreign: idlogotipo
      type: many

如果我选择第一个选项,那么我需要构建一个查询以从DB获取文件名,然后从文件系统中删除该文件,上传新文件并使用新ID更新SdrivingEmpresa表上传的文件。在这种情况下,我不知道如何获取ID以及在哪里为这些操作编写逻辑:在protected function processForm(sfWebRequest $request, sfForm $form) { }? in&#39; doSave($ con = null){}&#39;在SdrivingLogotipoForm.class.php?在哪里?

任何帮助?

1 个答案:

答案 0 :(得分:1)

我建议你使用ajax。创建一个名为ajax的模块,并在那里的动作和模板中开发逻辑。

单击每个选项卡以运行ajax表单操作。

这是我的建议。

祝你好运。