#1 CakePHP, Me pueden hacer el favor de explicarme como funciona lo siguiente?
Buen día a todos,
Tengo en mi página principal unas tabs, cada una pertenece a un deporte, y el contenido de cada tab son los próximos eventos http://gamesoft.com.co/sportsbook/ , al darle clic en cada link yo le indico un ID de una liga, el cual me manda a la vista de la liga con sus respectivos eventos http://gamesoft.com.co/sportsbook/sports/101.
Resulta que cuando está la lista de los eventos de la liga, en ese por ejemplo me sale:
(1)2012-08-12 18:00 l Deportivo Pasto 2.25 l X 3.10 l Independiente Santa Fe 2.80 l mas ,
cuando yo le doy clic a los números me aumenta la apuesta en el cuadro amarillo-derecha (en el momento no está sirviendo :/ ) pero hasta ahí todo claro.
Lo que quiero hacer es que en los eventos de las tabs, ya no me aparezcan los links sino que me salga igual a (1) , para poder hacer las apuestas desde ahí mismo, osea, que en cada tab me salgan los cuadritos, que quede así https://www.bwin.com/es/sportsbook.aspx. Creo que me he hecho entender.
------
Me he dado cuenta que al dar clic en el link, cuando envío el ID de la liga me manda a mi vista 'webroot/view/Sports/display.ctp' la cual contiene lo siguiente:
Código PHP:
echo $this->Form->create(); ?>
echo $this->Form->input('bet_type', array('onchange' => 'filter()', 'id' => 'bet-type', 'label' => __('Select bet type'), 'type' => 'select', 'options' => $betTypes)); ?>
echo $this->Form->end(); ?>
foreach ($events as $sport): ?>
if (isset($sport['League'])): ?>
foreach ($sport['League'] as $league): ?>
if (!empty($league['Event'])): ?>
echo $sport['Sport']['name']; ?> :: echo $league['League']['name']; ?>
foreach ($league['Event'] as $event): ?>
echo $this->Beth->makeMainBet($event);/*BethHelper*/ ?> *
foreach ($event['Bet'] as $bet): ?>
echo $this->Beth->makeBet($bet); ?>
endforeach; ?>
En lo anterior, la parte que muestra lo que yo quiero es donde está *,
manda la variable $event a la función 'makeMainBet'
del BethHelper.php: Código PHP:
function makeMainBet($event) {
$str = '';
if (isset($event['Bet']['Outright']))
$str = $this->__outrightMain($event); /*llama a funcion __outrightMain*/
else if (isset($event['Bet']['Versus']))
$str = $this->__versusMain($event); /*llama a funcion __versusMain*/
else if (isset($event['Bet']['Versus (with Draw)'])) **
$str = $this->__versusDrawMain($event); /*llama a funcion __versusDrawMain*/ **
else {
//TODO handle other cases
$str = $this->__outrightMain($event);
}
return $str;
}
Mirando en la tabla 'bets' encuentro que para el evento que seleccioné, me aparece en 'type(campo)' el dato "Versus (with Draw)" , así que el que me está mostrando en la vista con el ID 101 es la función con ** Código PHP:
function __versusDrawMain($event) {
$betParts = $event['Bet']['Versus (with Draw)']['BetPart'];
$str = '';
// @TOUCH UP
if ($this->isMainIdVisible()) {
$str .= '' . __('ID: ') . $event['Bet']['Versus (with Draw)']['id'] . '
';
}
$str .= ''
;
$str .= 'c_' . $this->convertTime($event['Event']['date']) . '
';
$str .= '' . __('more', true) . '
';
$str .= ''
;
$str .= ''
;
$str .= ''
;
$str .= '. $betParts[2]['BetPart']['id'] . '">' . $this->convertOdd($betParts[2]['BetPart']['odd']) . '
';
$str .= '' . $betParts[2]['BetPart']['name'] . '
';
$str .= ' ';
$str .= ''
;
$str .= '. $betParts[1]['BetPart']['id'] . '">' . $this->convertOdd($betParts[1]['BetPart']['odd']) . '
';
$str .= '' . $betParts[1]['BetPart']['name'] . '
';
$str .= ' ';
$str .= ''
;
$str .= '. $betParts[0]['BetPart']['id'] . '">' . $this->convertOdd($betParts[0]['BetPart']['odd']) . '
';
$str .= '' . $betParts[0]['BetPart']['name'] . '
';
$str .= ' ';
$str .= ' ';
$str .= ' ';
$str .= ' ';
return $str;
}
En lo anterior se ve claramente que en esa función del Helper está creando de una vez la vista con los DIVs y c/u con sus respectivas clases.Con esto se ve que esos div y esos datos son los que muestra cuando me manda a la vista con el ID de la liga.Mi duda era ¿si yo le mando solo el ID de la liga, como me vincula todo con las otras tablas y me trae los datos?Todo depende de la variable $events la cual se crea en SportsController.php: (voy a la función de la vista
display.ctp)
Código PHP:
function display($leagueId = null, $betType = null) {
if ($leagueId == null) {
$this->redirect('/');
}
$betTypes = $this->Sport->League->Event->Bet->getBetTypes($leagueId); ***
$this->set('betTypes', $betTypes);
$league = $this->Sport->League->getItem($leagueId, 0);
$sports[]['Sport'] = $league['Sport'];
$events = $this->Sport->League->Event->getUpcomingEvents($leagueId, $betType);
$sports[0]['League'][] = $events;
$events = $sports;
$url = Router::url(array('controller' => 'sports', $leagueId));
$this->set(compact('events', 'url'));
}
En esta función display asimilo que respecto al ID de la liga carga los datos de las tablas(modelos) desde *** , ahí no entiendo bien esa línea (ni toda la función[en la linea Sport->League->Event->Bet->getBetTypes($leagueId) , acaso le pasa el ID a los modelos 'Sport->League->Event->Bet'? o como es eso?]), veo que nombra la función getBetTypes que la encontré en el Model/Bet.php: ()
Código PHP:
public function getBetTypes($leagueId = 0, $sportId = null) {
$options['recursive'] = -1;
$options['fields'] = array(
'Bet.type'
);
$options['joins'] = array(
array(
'table' => 'events',
'alias' => 'Event',
'type' => 'INNER',
'conditions' => array(
'Bet.event_id = Event.id'
)
),
array(
'table' => 'leagues',
'alias' => 'League',
'type' => 'INNER',
'conditions' => array(
'Event.league_id = League.id'
)
)
);
//join sports table if required
if ($sportId == null) {
$options['conditions'] = array(
'League.id' => $leagueId
);
} else {
$options['joins'][] = array(
'table' => 'sports',
'alias' => 'Sport',
'type' => 'INNER',
'conditions' => array(
'League.sport_id = Sport.id'
)
);
$options['conditions'] = array(
'Sport.id' => $sportId
);
}
$options['group'] = 'Bet.type';
$data = $this->find('all', $options);
$betTypes['All'] = __('All');
foreach ($data as $row) {
$type = str_replace('/', '_', $row['Bet']['type']);
$type = str_replace(' ', '-', $type);
$betTypes[$type] = $row['Bet']['type'];
}
return $betTypes;
}
Deseo saber como funciona la function display ya que esta es la que me vincula todos los datos y me crea un array el cual es el que lleva a la vista, ahí hace unos foreach y me manda al helper el cual contiene la vista.
Con tanta llamada entre funciones quedo muy confundido y me desespero porque me pierdo en el camino.
En fin! tengo que llegar a mostrar los últimos eventos para cada tab con la posiblidad de apostar directamente como en la página bwin.
Espero no molestar con tanto código pero es que llevo una semana con eso, y ando colgado.
De antemano muchas GRACIAS por la colaboración!
¿Este tema te pareció interesante? Compártelo!
¿No es lo que buscabas? Intenta buscar un tema similar
0 comentarios
/ 495 Visitas