我使用"制表符"制作的模块,每个标签以这种方式调用组件:
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
?在哪里?
任何帮助?
答案 0 :(得分:1)
我建议你使用ajax。创建一个名为ajax的模块,并在那里的动作和模板中开发逻辑。
单击每个选项卡以运行ajax表单操作。
这是我的建议。
祝你好运。