CakePHP: неопределенная переменная с использованием find и containable

#cakephp #cakephp-1.3

#cakephp #cakephp-1.3

Вопрос:

Столкнувшись с другой проблемой, из-за которой я, похоже, просто не могу найти какую-либо информацию, что может быть причиной.

Я объявляю переменную $makes, а внутри представления она ее не находит.

вот мой текущий код:

 function makemodel($id = null) {
    $this->Make->id = $id;

    $makes = $this->Make->find('all', array(
        'conditions' => array('id' => $id),
        'contain' => array('Makemodel' => array('Road'))
        )
    );
}
  

}
?>

Я также пробовал это: $this-> set->(‘makes’,$this-> Make-> find(скрипт здесь));

Буду признателен за любой совет, спасибо!

Существуют ли какие-либо справочные материалы, кроме книги CakePHP?

Array ( [0] => Array ( [Make] => Array ( [id] => 1 [url_make] => subaru [MakeName] => Subaru [MakeOrigin] => Япония [Сводка] =>

             )

        [Makemodel] => Array
            (
                [0] => Array
                    (
                        [id] => 1
                        [ModelName] => Impreza WRX
                        [make_id] => 1
                        [Road] => Array
                            (
                                [0] => Array
                                    (
                                        [id] => 3
                                        [makemodel_id] => 1
                                        [RoadTypeID] => 1
                                        [name] => Dirt
                                    )

                                [1] => Array
                                    (
                                        [id] => 4
                                        [makemodel_id] => 1
                                        [RoadTypeID] => 2
                                        [name] => Snow
                                    )

                            )

                    )

            )

    )
  

)

Ответ №1:

Предполагая, что вызов find работает правильно, вы должны передать данные из вашего контроллера в ваше представление с помощью set() метода.

     function makemodel($id = null) {
    $this->Make->id = $id;

    $makes = $this->Make->find('all', array(
        'conditions' => array('id' => $id),
        'contain' => array('Makemodel' => array('Road'))
        )
    );
    $this->set(compact('makes'));
}
  

Комментарии:

1. Потрясающее спасибо, начинаю понимать это. Не могли бы вы, пожалуйста, объяснить мне, почему это не работает. <?php echo $makes[‘Make’][‘MakeName’]?> Я смог выполнить отладку ($ makes), и массивы оказались правильными.

2. Для этого может потребоваться новый вопрос, но MakeName это модель или поле?

3. Мне нужно было бы взглянуть на массив, поместить его в pastebin или что-то в этом роде

4. Спасибо за помощь, я разместил массив внутри вопроса.

5. Если она не находится в цикле, вам нужно будет получить доступ к $makes[‘Makemodel’][0][‘ИмямоДели’]

Ответ №2:

find Возвращает правильные результаты?

 function makemodel($id = null) {
    $makes = $this->Make->find('all', array(
        'conditions' => array('id' => $id),
        'contain' => array('Makemodel' => array('Road'))
        )
    );
    $this->set('makes', $makes);
}