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.

Responder a