Проблема неопознанного индекса Cakephp - PullRequest
0 голосов
/ 02 августа 2011

Привет, я пытался заставить это работать целую вечность,

У меня есть контроллер сделок

<?php
class DealsController extends AppController {

    var $name = 'Deals';
    var $helpers = array('HTML', 'Javascript', 'Form', 'Time', 'Ajax');
    var $components = array('RequestHandler', 'Session', 'Cookie');
    var $uses = array('Deal', 'City', 'Partner');

    function beforeFilter(){
        parent::beforeFilter();

        if(strpos($this->here, 'admin')){
            $this->layout = 'admin';
        }

    }

    function view($id = null) {
        if (!$id) {
            $this->Session->setFlash(__('Invalid deal', true));
            $this->redirect(array('action' => 'index'));
        }
        $this->set('deal', $this->Deal->read(null, $id));
    }

    function by_city($CityID = null)
{
    $city = $this->paginate = array(
        'conditions' => array('City.id' => $CityID),
        'limit' => 1
     );
    $this->set('city',$city);


    $this->Retailer->recursive = -1;
    $this->paginate = array(
        'conditions' => array('Deal.city_id' => $CityID),
        'order' => array('Deal.start'=>'desc'),
        'limit' => 3
     );
    $this->set('deals',$this->paginate());

}

, и представление by_city:

<h3>More Deals from <?php echo $city['City']['city'];?></h3>

Сейчаскогда я запускаю это, я получаю уведомление "неопознанный индексный город"

, когда я запускаю var_dump, он говорит, что есть массив City и 'city', а также имеет значение, которое звучит для меня так, как будто контроллер прошел это

я потерян сейчас lol

Вся помощь приветствуется, если вам нужна дополнительная информация, просто спросите:)

Редактировать: Измененный код - он по-прежнему не идентифицирует переменную Город

вот переменная var_dump, показывающая, что контроллер передает ее:

array(1) {
  [0]=>
  array(3) {
    ["Deal"]=>
    array(15) {
      ["id"]=>
      string(1) "2"
      ["... this part of is fine so ill hide this part of the var_dump
    }
    ["City"]=>
    array(2) {
      ["id"]=>
      string(1) "1"
      ["city"]=>
      string(7) "Glasgow"
    }
  }
}

, поскольку вы можете видеть, что $ city ['City'] ['city'] передается.PS я изменю название этого поля;)

Спасибо, Дейв

1 Ответ

0 голосов
/ 02 августа 2011

Если вы используете CakePHP, вы должны следовать его пути для получения данных. Измените свой код на это:

function by_city($CityID = null)
{
    $this->paginate = array(
      'conditions' => array('City.id' => $CityID),
      'order' => array('Deal.start'=>'desc'),
      'limit' => 3
    );
    $deals = $this->paginate();
    $city = $this->City->find('first',array('conditions'=>array('City.id'=>$CityID)));
    $this->set(compact('deals','city'));
}

Редактировать: я вижу, что вы хотите сделать сейчас, проверьте код выше;)

...