Crear alert o confirm de javascript con symfony.

815 views
Skip to first unread message

Pablo Braulio

unread,
Dec 23, 2008, 6:21:34 PM12/23/08
to symfo...@googlegroups.com
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Hola a todos.

Quisiera generar este tipo de mensajes de javascript desde una función
en el action.class.php.

Hasta ahora he visto como hacerlo por ejemplo en los botones con el
evento onclick:

button_to('nombre, 'direccion', 'confirm=mensaje');

Lo que quisiera hacer es lo siguiente:

public function executeCreate()
{
//Contamos los ficheros.
$c= new Criteria();
$c->add(FicherosPeer::EMPRESA,
sfContext::getInstance()->getUser()->getAttribute('numEmpresa'));
$ficheros= FicherosPeer::doCount($c);

if($ficheros== 0){
aquí llamar al alert o confirm.
}

resto código
}

Se que se podría hacer con: echo "<script>alert(mensaje)</script>", pero
estoy seguro que symfony tiene algo previsto para esto.
- --
Saludos cordiales.
Pablo.
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iEYEARECAAYFAklRcn4ACgkQK7lGsMchFsxVwgCgh7kL9AdYLZHEEi+DJK4m/Mjj
0qMAoINiLAPjrElk42mNByugxNaY2yTM
=+3Jo
-----END PGP SIGNATURE-----

Daniel González

unread,
Dec 23, 2008, 6:35:19 PM12/23/08
to symfo...@googlegroups.com
Según el modelo MVC de Sf, las acciones son para mantener la lógica de negocio.
Lo que propones debe ir en las plantillas.

Tienes que tener en cuenta que en Sf la respuesta es un objeto en si
mísma, y los echo en las acciones, solo se deberían ver en las etapas
de desarrollo ( más que nada para debug ).

podrias hacerlo así.

public function executeCreate($request)
{
//Contamos los ficheros.
// ... código

if( $ficheros == 0 && $request->getParameter('seguro') )


{
aquí llamar al alert o confirm.
}

else
$this->redirect( 'modulo/confirmar');

resto código

}

No se si me quedo claro.

Daniel González Cerviño
tel 653965048
ika...@gmail.com

2008/12/24 Pablo Braulio <bru...@gmail.com>:

Daniel González

unread,
Dec 23, 2008, 6:36:24 PM12/23/08
to symfo...@googlegroups.com
2008/12/24 Daniel González <ika...@gmail.com>:

> Según el modelo MVC de Sf, las acciones son para mantener la lógica de negocio.
> Lo que propones debe ir en las plantillas.
>
> Tienes que tener en cuenta que en Sf la respuesta es un objeto en si
> mísma, y los echo en las acciones, solo se deberían ver en las etapas
> de desarrollo ( más que nada para debug ).
>
> podrias hacerlo así.
>
> public function executeCreate($request)
> {
> //Contamos los ficheros.
> // ... código
>
> if( $ficheros == 0 && $request->getParameter('seguro') )
> {
> aquí llamar al alert o confirm.
> }
> else
> $this->redirect( 'modulo/confirmar');
>
> resto código
>
> }
>

perdón queria decir:

public function executeCreate($request)
{
//Contamos los ficheros.
// ... código

if( $ficheros == 0 && $request->getParameter('seguro') )
{

resto código

José Leonardo Diaz Ordoñez

unread,
Dec 23, 2008, 6:41:46 PM12/23/08
to symfo...@googlegroups.com
Hola Pablo, creo que tienes un poco confundidos los conceptos de symfony.
Donde quieres colocar el alert o confirm es imposible, ya que la accion se ejecuta del lado del servidor y nunca podria solicitar esa informacion al usuario.

Lo que creo debes hacer es invocar el alert justo antes de invocar la accion executeCreate, es decir desde la pagina que te genera el formulario y que envia la info a la accion create.
Ahora si existen condiciones especiales que afecten la creacion de algun objeto (que me imagino es tu caso, y en consecuencia necesitas confirmar al usuario) deberas hacerlo con algun funcion javascript que se ejecute antes de enviar el formulario.
Espero me entiendas sino con mucho gusto te ayudaremos con tus dudas.
--
--------------------------------------------------------------------------------------------------------------------------------------------
José Leonardo Diaz Ordoñez
Ingeniero en Electrónica y Telecomunicaciones
Énfasis en Ingeniería Telemática.
Universidad del Cauca, Popayán -Colombia
2007

Pablo Braulio

unread,
Dec 23, 2008, 7:02:04 PM12/23/08
to symfo...@googlegroups.com
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

José Leonardo Diaz Ordoñez escribió:


> Hola Pablo, creo que tienes un poco confundidos los conceptos de symfony.
> Donde quieres colocar el alert o confirm es imposible, ya que la accion
> se ejecuta del lado del servidor y nunca podria solicitar esa
> informacion al usuario.
>
> Lo que creo debes hacer es invocar el alert justo antes de invocar la
> accion executeCreate, es decir desde la pagina que te genera el
> formulario y que envia la info a la accion create.
> Ahora si existen condiciones especiales que afecten la creacion de algun
> objeto (que me imagino es tu caso, y en consecuencia necesitas confirmar
> al usuario) deberas hacerlo con algun funcion javascript que se ejecute
> antes de enviar el formulario.
> Espero me entiendas sino con mucho gusto te ayudaremos con tus dudas.
>
>
>

En mi caso la función executeCreate no muestra la plantilla
createSuccess, sino que realiza otra acción.

public function executeCreate()
{
//Contamos los ficheros.
$c= new Criteria();
$c->add(FicherosPeer::EMPRESA,
sfContext::getInstance()->getUser()->getAttribute('numEmpresa'));
$ficheros= FicherosPeer::doCount($c);

if($ficheros== 0){

$this->forward('ficheros', 'list');
}

$con = Propel::getConnection();
$sql = 'select
crear_doc_seguridad('.sfContext::getInstance()->getUser()->getAttribute('numEmpresa').')';
$statement = $con->prepareStatement($sql);
$rs= $statement->executeQuery();

if($rs){
$this->forward('plantilladocsegcliente', 'list');
}
}

Se trata de que en el caso de que la primera consulta no muestra datos,
o la cuenta de estos sea "cero", muestre una alerta al usuario para que
actue o pida confirmación.

Antes de usar symfony, esto lo podía hacer de este modo:

consulta

if($ficheros== 0){
echo "<script>alert(MENSAJE)</script>";
}

Ya se que php y javascript son dos lenguajes distintos y que cada uno se
ejecuta en un entorno (servidor y cliente).

Otro modo de hacerlo sería redirigiendo a una plantilla creada para tal
efecto que tenga el mismo contenido. El cualquier caso creo que se
trataría de hacer lo mismo pero con mas trabajo.


- --
Saludos cordiales.
Pablo.
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iEYEARECAAYFAklRe/wACgkQK7lGsMchFszewwCgpeQ+raLoGGmDalrr06UxLeIA
XOIAnApk5U8fYw/o9IqM82Je7OfBvINq
=9WK8
-----END PGP SIGNATURE-----

Reply all
Reply to author
Forward
0 new messages