CakePHP найти "первый" не тянет данные - PullRequest
0 голосов
/ 24 января 2012

У меня есть ссылка, которая звонит:

<a href="/coupons/print_coupon/<?php echo $coupon['id']; } ?>" id="print"><span style="margin-left:24px;">Print</span></a>

Он включает правильный идентификатор, и мой маршрут отправляет его в правильный файл просмотра У меня есть команда отладки, чтобы показать весь массив для страницы печати, но я получаю пустой массив. Вот мой код контроллера:

<?php 
class CouponsController extends AppController {
    public $name='Coupons';
    public $uses=array('User', 'Coupon', 'Restaurant');
    public $layout='pagelayout';


    public function print_coupon($name=null) {
      $this->set('title', 'Print your coupon');
      $f=$this->Coupon->find('first', array('conditions'=>array('Coupon.id'=>$this->params['id'])));
      $this->set('name', $f);
    }

} ?>

Вот моя модель купона:

<?php
class Coupon extends AppModel {
    public $name='Coupon';
    var $belongsTo=array(
    'Restaurant'=>array (
        'className'=>'Restaurant',
        'foreignKey'=>'restaurant_id'
        )
    );
}

?>

и вот мой ресторан Модель:

<?php

class Restaurant extends AppModel {
public $name='Restaurant';
var $hasMany=array(
    'Coupon'=>array(
        'className'=>'Coupon',
        'foreignKey'=>'restaurant_id'
        )
);
var $belongsTo=array(
'User'=>array(
'className'=>'User',
'foreignKey'=>'user'
)
);

}


?>

Я пробовал варианты, используя

 <a href="/coupons/print_coupon/<?php echo $res['Restaurant']['coupon']; } ?>" id="print"><span style="margin-left:24px;">Print</span></a>

вместе с моим контроллером:

public function print_coupon($name=null) {
      $this->set('title', 'Print your coupon');
      $f=$this->Coupon->find('first', array('conditions'=>array('Coupon.id'=>$this->params['id'])));
      $this->set('name', $f);
    }

, а также несколько других, и всякий раз, когда я отлаживаю ($ name), я получаю пустой массив. У меня не было проблем с тем, чтобы связать Coupon с другими моими моделями для других задач, но я думаю, что-то может быть не так с моей моделью ресторана.

Для справки, у меня они равны между собой: Restaurants.coupon = Coupon.id Coupon.restaurant_id = Restaurant.id

1 Ответ

1 голос
/ 24 января 2012

Первый код привязки, который вы опубликовали, имеет фигурную скобку, которой там быть не должно. Когда вы используете это:

<a href="/coupons/print_coupon/<?php echo $coupon['id']; ?>" id="print"><span style="margin-left:24px;">Print</span></a>

Это должно привести к некоторому URL, вот так:

/coupons/print_coupon/75

Затем в вашем CouponsController, который 75 превращается в $name в ваших параметрах print_coupon (с настройками маршрутизации по умолчанию), я рекомендую изменить это значение на $coupon_id, поэтому ваша функция должна выглядеть следующим образом:

public function print_coupon($coupon_id) {
  $this->set('title', 'Print your coupon');
  $f=$this->Coupon->find('first', array('conditions'=>array('Coupon.id'=>$coupon_id)));
  $this->set('name', $f);
}

Теперь $name должен быть доступен по вашему мнению. С этим кодом выше $name не будет существовать в контроллере.

Я не думаю, что $this->params существует в Cake 2. *. debug($this->request->params); Вы можете получить параметры оттуда в контроллере.

...