Boas,
Estou a criar um sitema que verifica a disponibilidae de quartos de hoteis, e preciso reenviar novas variaveis para o smarty quando se alteram as datas do check-in e/ou check-out.
O que estou a tentar fazer para concretizar isto é: quando as novas datas são submetidas, estas são enviadas para uma função de xajax que inicia um output buffering para guardar o output de um ficheiro php include semelhante ao principal mas que chama apenas uma subtemplate do smarty que está no div.
o codigo do php que chama a template principal é algo do tipo:
<?php
include($_SERVER['DOCUMENT_ROOT']."/../app.php");
require_once($CFG->wwwroot."/lib/hotels.inc.php");
require_once($CFG->wwwroot."/inc/xajax/xajax_core/xajax.inc.php");
$_SESSION["search"]["datein"] = $_REQUEST["checkin"];
$_SESSION["search"]["dateout"] = $_REQUEST["checkout"];
$_SESSION["search"]["id"] = $_REQUEST["id"];
$hotel = &new hotels();
$hotel->id = $_SESSION["search"]["id"];
$hotel->initDat = $_SESSION["search"]["datein"];
$hotel->endDate = $_SESSION["search"]["dateout"];
$allotments = $hotel->checkAllots();//retorna o numero de quartos disponiveis para o hotel
//Smarty Config
$smarty = new Smarty;
$smarty->compile_check = true;
$smarty->debugging = false;
$smarty->template_dir = $CFG->smartydirs . "/templates/m4travel";
$smarty->compile_dir = $CFG->smartydirs . "/templates_c/m4travel/";
$smarty->config_dir = $CFG->smartydirs . "/configs";
//CFG Vars
$smarty->assign("wwwroot", $CFG->wwwroot);
$smarty->assign("wwwinc", $CFG->wwwinc);
$smarty->assign("wwwimagens", $CFG->wwwimagens);
$smarty->assign("wwwsubroot", $CFG->wwwtravelroot);
$smarty->assign("wwwsubinc", $CFG->wwwtravelinc);
$smarty->assign("wwwsubimagens", $CFG->wwwtravelimagens);
//Dados
$datain = reversed_date($_SESSION["search"]["datein"]);
$dataout = reversed_date($_SESSION["search"]["dateout"]);
/****OUTROS DADOS****/
//Vars
$smarty->assign("pedatain", $_SESSION["pesquisas"]["datain"]);
$smarty->assign("pedataout", $_SESSION["pesquisas"]["dataout"]);
$smarty->assign("available", $allotments);
/****OUTRAS VARIAVEIS****/
//XAJAX
$xajax = new xajax();
$xajax->registerFunction("changeDates");
function changerDates($newCheckin,$newCheckout) {
GLOBAL $CFG;
$objResponse = new xajaxResponse();
$_SESSION["search"]["datein"] = $newCheckin;
$_SESSION["search"]["dateout"] = $newCheckout;
ob_start();
include($CFG->wwwroot."/hotels/verifyNewDates.php");
$res = ob_get_contents();
ob_end_clean();
$objResponse->assign("tab0","innerHTML",$res);
return $objResponse;
}
$xajax->processRequest();
$smarty->assign('xajax_script',$xajax->getJavascript('../../inc/xajax'));
$smarty->display("alojamentos/alojamento.tpl");
?>
o verifyNewDates.php é identico a este mas n tem os $_REQUESTs pois estao guardados na $_SESSION e em vez de $smarty->display("alojamentos/alojamento.tpl"); é
$smarty->display("alojamentos/available.tpl");
a template principal do smarty(alojamentos/alojamento.tpl) tem uma parte assim:
<div id="tab0">
{include file="/alojamentos/available.tpl"}
</div>
e dentro dessa sub-template esta o formulario e os dados dos quartos disponiveis.
porem o xajax n esta a devolver a resposta.
Alguem me pode ajudar? ou se acham que esta não é a melhor aproximação para este problema digam-me qual acham que seria uma melhor solução.
Desde ja obrigado por qualquer ajuda.
Big Up!