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*<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: <div id="sports" class="display"> <?php echo $this->Form->create(); ?> <?php echo $this->Form->input('bet_type', array('onchange' => 'filter()', 'id' => 'bet-type', 'label' => __('Select bet type'), 'type' => 'select', 'options' => $betTypes)); ?> <?php echo $this->Form->end(); ?> <?php foreach ($events as $sport): ?> <?php if (isset($sport['League'])): ?> <?php foreach ($sport['League'] as $league): ?> <?php if (!empty($league['Event'])): ?> <h3><?php echo $sport['Sport']['name']; ?> :: <?php echo $league['League']['name']; ?> </h3> <?php foreach ($league['Event'] as $event): ?> <div id="events"> <div class="event"> <div class="main-bet"> <?php echo * $this->Beth->makeMainBet($event);*/*BethHelper*/ ?> * </div> <div class="other-bets"> <?php foreach ($event['Bet'] as $bet): ?> <?php echo $this->Beth->makeBet($bet); ?> <?php endforeach; ?> </div> </div> </div> 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:* 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 ** function __versusDrawMain($event) { $betParts = $event['Bet']['Versus (with Draw)']['BetPart']; $str = ''; // @TOUCH UP if ($this->isMainIdVisible()) { $str .= '<div class="event-id">' . __('ID: ') . $event['Bet']['Versus (with Draw)']['id'] . '</div>'; } $str .= '<div class="event-holder">'; $str .= '<div class="event-date">c_' . $this->convertTime($event['Event']['date']) . '</div>'; $str .= '<div class="event-more">' . __('more', true) . '</div>'; $str .= '<div class="event-title event-versus-draw">'; $str .= '<div>'; $str .= '<div class="right-bet">'; $str .= '<div class="bet-odd" title="' . $betParts[2]['BetPart']['id'] . '">' . $this->convertOdd($betParts[2]['BetPart']['odd']) . '</div>'; $str .= '<div class="bet-outright">' . $betParts[2]['BetPart']['name'] . '</div>'; $str .= '</div>'; $str .= '<div class="middle-bet">'; $str .= '<div class="bet-odd" title="' . $betParts[1]['BetPart']['id'] . '">' . $this->convertOdd($betParts[1]['BetPart']['odd']) . '</div>'; $str .= '<div class="bet-outright">' . $betParts[1]['BetPart']['name'] . '</div>'; $str .= '</div>'; $str .= '<div class="left-bet">'; $str .= '<div class="bet-odd" title="' . $betParts[0]['BetPart']['id'] . '">' . $this->convertOdd($betParts[0]['BetPart']['odd']) . '</div>'; $str .= '<div class="bet-outright">' . $betParts[0]['BetPart']['name'] . '</div>'; $str .= '</div>'; $str .= '</div>'; $str .= '</div>'; $str .= '</div>'; 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*) 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*: () 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! -- Has recibido este mensaje porque estás suscrito al grupo "CakePHP-es" de Grupos de Google. Para ver este debate en la Web, visita https://groups.google.com/d/msg/cakephp-es/-/4VWL_qXro9UJ. Para publicar una entrada en este grupo, envía un correo electrónico a [email protected]. Para anular tu suscripción a este grupo, envía un correo electrónico a [email protected] Para tener acceso a más opciones, visita el grupo en http://groups.google.com/group/cakephp-es?hl=es.
