sinfonico
unread,Feb 10, 2012, 12:49:25 PM2/10/12Sign in to reply to author
Sign in to forward
You do not have permission to delete messages in this group
Either email addresses are anonymous for this group or you need the view member email addresses permission to view the original message
to symfo...@googlegroups.com
Saludos al grupo.
Estoy desarrollando una versión parecida al proyecto Jobeet, es decir un sitio web de una bolsa de trabajo, en el cual sea posible que los candidatos que deseen aplicar a una oferta de trabajo profesional sean capaces de especificar varias carreras profesionales en su perfil. Quisiera saber como crear un formulario para añadir un candidato a la base de datos y las distintas carreras que éste desea añadir a su perfil, pero que él pueda especificar el número de carreras que desea agregar, en lugar de un número predefinido de carreras específicado en la función configure() del formulario del Candidato.
La relación entre los Candidatos y sus Carreras, es de muchos a muchos por medio de una tabla de relación llamada CarreraCandidato, la tabla de ralación CarreraCandidato tiene su propio formulario de symfony y puede ser embebido en el formulario de Candidato n veces, por ejemplo embeber 3 formularios de CarreraCandidato en el formulario Candidato para que éste pueda agregar tres carreras profesionales que haya cursado. Lo ideal sería que en el formulario de candidatos se puedan agregar n fomularios de CarreraCandidato cuando ya se ha visualizado el formulario.
El modelo de la base de datos es el siguiente:
Candidato:
columns:
candidato_id:
type: integer
primary: true
notnull: true
autoincrement: true
dni:
type: string(10)
notnull: true
nombres:
type: string(50)
notnull: true
apellidos:
type: string(50)
notnull: true
direccion:
type: string(100)
notnull: true
telefono:
type: string(20)
notnull: true
celular:
type: string(20)
notnull: true
fecha_nacimiento:
type: timestamp
notnull: true
Carrera:
columns:
carrera_id:
type: integer
primary: true
autoincrement: true
descripcion:
type: string(100)
notnull: true
CarreraCandidato:
tableName: obt_carrera_candidato
columns:
candidato_id:
type: integer
primary: true
carrera_id:
type: integer
primary: true
anio_en_curso:
type: integer
notnull: true
promedio:
type: float
default: null
relations:
candidato:
class: Candidato
local: candidato_id
foreign: candidato_id
foreignAlias: CarrerasCandidatos
carrera:
class: Carrera
local: carrera_id
foreign: carrera_id
foreignAlias: CarrerasCandidatos
He creado varios formularios de CarreraCandidato embebidos dentro del formulario de un Candidato, pero lo que deseo es que mientras el usuario este viendo el formulario pueda agregar más carreras, es decir que se agregen más formularios embebidos de CarreraCandidato en el formulario de Candidato.
El código para poder agregar los formularios embebidos de CarreraCandidato al formulario de Candidato es el siguiente y se encuentra en la función configure() del CandidatoForm:
class CandidatoForm extends BaseObtCandidatoForm {
public function configure() {
$subForm = new sfForm();
for ($i = 1; $i <=3; $i++) {
$carreraCandidato = new ObtCarreraCandidato();
$carreraCandidato->candidato = $this->getObject();
$form = new ObtCarreraCandidatoForm($carreraCandidato);
$subForm->embedForm($i, $form);
}
$this->embedForm('carrerasCandidato', $subForm);
}
}
En el actions.php se ejecuta el siguiente código:
public function execute RegistroCandidato(sfWebRequest $request){
$candidato = Doctrine_Core::getTable(''Candidato)->find($request->getParameter('id'));
$this->form = new ObtCandidatoForm(candidato);
}
En el template que muestra el formulario de Candidato y formulario embebido con CarrerasCandidatos sólo se manda a mostrar dichos formularios:
<?php echo $form?>
<?php echo $form->getEmbeddedForm('carrerasCandidato'); ?>
Este código genera tres formularios embebidos de CarreraCandidato en el formulario Candidato y es posible para el usuario especificar tres distintas carreras y guardar la información de su perfil con sus carreras correspondientes sin ningún problema. Pero lo deseado sería que el usuario pudiera, tal vez con un input en la página web que se le muestra agregar más formularios embebidos de carreras, de forma similar como se hace en la función configure() y que se muestren n formularios embebidos que ha especificado el usuario.
Gracias de antebrazo por vuestra ayuda :)
(mirad que me he esmerado poniéndole colorcitos al código)