2011-08-02 8 views
0

こんにちは、私はCakePHPの未確認インデックスの問題

<?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を実行すると、 AY市と「市」は、コントローラは、あなたがより多くの情報が必要な場合は、単に尋ねる、私は

すべてのヘルプは感謝笑今迷ってしまいました。この

に合格しているように私に聞こえる値aswellを持っている:)

編集:コードを変更 - そのはまだここに変数市

を識別していないが、コントローラがそれを渡していることを示すための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

HAHAHAHAのUFOのように^^あなたはおそらく、「未定義」を意味します。 .. – mark

+0

あなたはvar_dump($ deals)の出力を投稿できますか? – Ehtesham

+1

それは価値があるため、モデルの命名規則に従ってください。 cityという名前のテーブルがある場合は、フィールドにcityを使用する代わりに、nameを使用する必要があります。 City.cityの代わりにCity.nameを照会することができます。 –

答えて

0

あなたは、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')); 
} 

編集:?私は上記のコードをチェックし、あなたが今、何をしたいかを参照;)

+0

再帰が> = 0であると仮定 - それ以外の場合はここでコンテナを使用するほうがよい – mark

+0

彼はケーキに新しいと思われるので、まずは基本的なものを最初に示します。しかし、はい、コンテナは間違いなく良いです。 –

+0

ええ:)もちろん。私はまだ、私の頭を笑う。彼らをUFIと呼ぶことができます - 未確認の飛行指標です^^ no offense、bro。 – mark