Не уверен, как получить мои значения из массива - PullRequest
1 голос
/ 08 декабря 2011

У меня есть две проблемы с моим приложением CakePHP (оно мое первое в CakePHP). Я пытаюсь преобразовать старый php-сайт в торт.

1.Issue

У меня есть контроллер, который принимает параметр $ id, но данные поступают из соединенных таблиц, поэтому в кулинарной книге было что-то вроде этого

МОЙ Контроллер dish_categories_controller.php

class DishCategoriesController extends AppController {


    var $uses = array("DishCategory");
    var $hasOne ='';
    function get_categories($id)
    {

       $this->set('dishes',$this->DishCategory->find());
       $this->layout = 'master_layout';
    }   
  }

модель

dish_category.php

class DishCategory extends AppModel{

    var $name = 'DishCategory';

    var $hasOne = array(
            'Dish' => array(
              'className' => 'Dish',
              'conditions' => array('Dish.id' => '1'),
              'dependent' => true
                   )
           );
 }

Как вы можете видеть, Dish.id => '1' жестко запрограммирован, как сделать его динамическим, чтобы я передавал значение и делал что-то вроде Dish.if => $ id?.

Итак, это был мой первый выпуск.

Вторая проблема связана с представлением

Эта модель возвращает только одну запись, как я могу сделать так, чтобы она возвращала все, а также как я мог бы пройти через это, под кодом в представлении в настоящее время и форматом массива.

Это на мой взгляд

 <?php
         echo $dishes['DishCategory']['category_info'];
         echo $dishes['DishCategory']['category_title'];
         echo $dishes['Dish']['dish_name'];
         echo $dishes['Dish']['dish_image'];        
         echo $this->Html->image($dishes['Dish']['dish_image'], array('alt' => 'CakePHP'))


    ?>

Формат массива

Array ( [DishCategory] => Array 
       ( [id] => 1 [category_name] => Appetizers 
         [category_keywords] => appetizer, appetizers 
         [category_title] => Our Side Dishes 
         [category_info] => Test Test

[dish_id] => 1 ) 
      [Dish] => Array ( [id] => 1 
                        [dish_name] => Rice 
                        [dish_disc] => The Best flavor ever 
                        [dish_price] => 2.90 [dish_image] => /img/rice_chicken.jpeg [dish_category_id] => 1 
[dish_price_label] => Delicious Arepa ) ) 

Буду признателен за помощь, чтобы помочь мне понять, как лучше это сделать. Спасибо.

1 Ответ

3 голосов
/ 08 декабря 2011

Во-первых, у вас DishCategoriesController есть модель свойств, вы можете удалить их. В вашем контроллере вы установите условия для поиска следующим образом:

class DishCategoriesController extends AppController {

  function get_categories($id)
  { 
    // find category with a dish of $id
    $this->set('dishes', $this->DishCategory->find('all', array(
      'conditions' => array(
        'Dish.id' => $id
      )
    )));

    // set master layout
    $this->layout = 'master_layout';
  }   

}

Ваша DishCategory модель будет выглядеть очень просто, вам не нужно жестко кодировать условие отношения:

class DishCategory extends AppModel {

  /**
   * hasOne associations
   *
   * @var array
   */
    public $hasOne = array(
        'Dish' => array(
            'className' => 'Dish',
            'foreignKey' => 'dish_category_id'
        )
    )
}

На данный момент стоит отметить, что поскольку DishCategory hasOne Dish , используя приведенный выше запрос поиска, он будет когда-либо возвращать только один результат. Но если вы возвращали несколько результатов, вы можете просмотреть их в своем представлении следующим образом:

<?php foreach ($dishes as $key => $dish): ?>
  <?php var_dump($dish) ?>
<?php endforeach ?> 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...