En mi "CouponsController.php", tengo las siguientes 2 funciones:

public function index() {
    $this->set('coupons', $this->Coupon->find('all'));
}

public function restaurants() {
    $this->set('coupons', $this->Coupon->findBycategory_id('1'));
    $this->render("index"); 
}

Básicamente, quiero que la función de índice devuelva todos los cupones y que los restaurantes devuelvan solo la categoría 1 (pero quiero usar el mismo archivo de vista).

Termino recibiendo este error:

Notice (8): Undefined index: Coupon [APP/View/Coupons/index.ctp, line 16]

Es por cómo se devuelve la matriz para cada uno de ellos. Aquí está mi archivo VIEW y los resultados de cada página:

Coupons/index.ctp:
foreach ($coupons as $c) {
    print_r($c);
}

INDEX function:
Array ( [Coupon] => Array ( [id] => 1 [vendor_id] => 1 [category_id] => 1 [title] => $10 For Whatever [price] => 10.00 [value] => 20.00 [start_at] => 2012-02-07 12:03:00 [end_at] => 2012-02-29 12:03:05 [details] => Test [terms] => Test [mini_views] => 0 [large_views] => 0 [created] => 2012-02-08 12:03:12 ) ) Array ( [Coupon] => Array ( [id] => 2 [vendor_id] => 2 [category_id] => 2 [title] => Test [price] => 100.00 [value] => 200.00 [start_at] => 0000-00-00 00:00:00 [end_at] => 0000-00-00 00:00:00 [details] => [terms] => [mini_views] => 0 [large_views] => 0 [created] => 2012-02-08 12:14:03 ) )

RESTAURANTS function:
Array ( [id] => 1 [vendor_id] => 1 [category_id] => 1 [title] => $10 For Whatever [price] => 10.00 [value] => 20.00 [start_at] => 2012-02-07 12:03:00 [end_at] => 2012-02-29 12:03:05 [details] => Test [terms] => Test [mini_views] => 0 [large_views] => 0 [created] => 2012-02-08 12:03:12 )
1
execv 8 feb. 2012 a las 23:20
Lo he descubierto. Necesitaba "findALLBY" en los restaurantes ()
 – 
execv
8 feb. 2012 a las 23:31

1 respuesta

La mejor respuesta

Bueno, así es como Cakephp lo devuelve, un cambio sería

foreach ($coupons as $coupon) {
    $c = $coupon;
    if (isset($coupon["Coupon"])) { // if is set index in array ["Coupon"] {
        $c = $coupon["Coupon"];
    }
    print_r($c);
}

O

public function restaurants() {
    $params = array('conditions' => array('Coupon.category_id' => 1));

    $this->set('coupons', $this->Coupon->find('all', $params));
    $this->render("index"); 
}
1
KukoBits 8 feb. 2012 a las 23:37