Primero tengo un formulario predefinido, entonces cuando selecciono algo
diferente en un combo determinado deberia cambiar el DIV 'denunciante'..
pero me da el siguiente error en javascript:
Error: Form is not defined
Archivo Fuente: http://indepabis/intranet_dev.php/denuncia/new
Línea: 191
Esto es en HTML:
<script type="text/javascript">
//<![CDATA[
new
Form.Element.EventObserver("denuncia[denunciantes][tipo_persona_id]",
function(element, value) {new Ajax.Updater('denunciante',
'/intranet_dev.php/denuncia/changeTipoPersona', {asynchronous:true,
evalScripts:false, parameters:'id=' + value });});
//]]>
</script>
ahora, mi funcion es esta:
> <?php use_helper('Javascript'); ?>
> <?php echo observe_field('denuncia[denunciantes][tipo_persona_id]', array(
> 'update' => 'denunciante',
> 'url' => 'denuncia/changeTipoPersona',
> 'with' => "'id=' + value ",
> ))
> ?>
GRACIAS
Resulta que el problema es el siguiente:
The template "%s" does not exist or is unreadable.
Esto es obvio porque la funcion en el action es la siguiente:
public function executeChangeTipoPersona($param)
{
$tipo_persona = PersonaPeer::retrieveByPk($param);
if($tipo_persona->getName() == 'Natural')
{
$formField = new PersonaNaturalForm();
$this->partial = 'natural';
}
elseif($tipo_persona->getName() == 'Juridica')
{
$formField = new PersonaJuridicaForm();
$this->partial = 'juridica';
}
return $formField;
}
y lo que quiero es reemplazar el formulario existente en Template,
especificamente en:
<tr><th colspan="2" class="rojo"><label>Denunciante</label></td></tr>
<div id="denunciante">
<?php if($partial): ?>
<?php include_partial('custom/'.$partial.'_field',
array('formField'=>$form['denunciante'])); ?>
<?php endif; ?>
</div>
es decir quiero cambier de formulario y el partial igualmente debe cambiar..
GRACIAS
estos son los cambio que hice:
public function executeChangeTipoPersona(sfWebRequest $request)
{
$this->tipo_persona =
TipoPersonaPeer::retrieveByPk($request->getParameter('id'));
if($this->tipo_persona->getNombre() == 'Natural')
{
$persona = new PersonaNaturalForm();
}
elseif($this->tipo_persona->getNombre() == 'Juridica')
{
$persona = new PersonaJuridicaForm();
}
$this->form = new DenunciaForm();
return $this->form->embedForm('denunciante', $persona);
}
tengo mi Template segun la action:
<?php if($tipo_persona->getNombre() == 'Natural'): ?>
<?php include_partial('custom/natural_field',
array('formField'=>$form['denunciante'])); ?>
<?php endif; ?>
<?php if($tipo_persona->getNombre() == 'Juridica'): ?>
<?php include_partial('custom/juridica_field',
array('formField'=>$form['denunciante'])); ?>
<?php endif; ?>
ahora el problema es que en realidad no 'borra' el formulario original...
anexo un pantallazo.
se supone que el formulario que aparece arriba y desordenado deberia
reemplazar al formulario que esta donde dice 'Denunciante'..
aqui esta el DIV donde deberia hacer el update:
<div id="denunciante">
<?php include_partial('custom/natural_field',
array('formField'=>$form['denunciante'])); ?>
</div>
y la funcion javascript:
<?php use_helper('Javascript'); ?>
<?php echo observe_field('denuncia_denunciante_tipo_persona_id', array(
'update' => 'denunciante',
'url' => 'denuncia/changeTipoPersona',
'with' => "'id=' + value ",
))
?>
alguna idea.?
GRACIAS
_________________________________________________________________
denuncia[denunciantes][tipo_persona_id] ??
--
Dock Sud BBS
http://bbs.docksud.com.ar
telnet://bbs.docksud.com.ar