2012-12-03 3 views
-1

가능한 중복 :
PHP: “Notice: Undefined variable” and “Notice: Undefined index”CakePHP의 2.2.4 : 정의되지 않은 인덱스 오류

많은 사람들의 "공지 사항 (8) 정의되지 않은 인덱스"오류 메시지가 있지만 없음에 대한 질문과 대답이 솔루션이 나를 위해 일하고 있습니다. 내 모델 관계가 올바르게 설정되었는지 잘 모르겠습니다. 제발 조언. ARTICLES INDEX.CTP 페이지에서 정의되지 않은 색인 오류가 발생하며 "아바타"는 정의되지 않은 부분입니다. 내 USERS VIEW.CTP 페이지에서

나는

$this->Custom->UserAvatar($article['User']['Avatar']['file'], $article['User']['username'], 'avatar_large'); 

에코 그것은 나에게 사용자에 대한 올바른 아바타를 제공합니다.

은 내 사용자 모델과 같이 설정 :

class User extends AppModel { 

var $belongsTo = array(
    'Avatar' => array(
     'className' => 'Avatar', 
     'dependent' => true, 
     'foreignKey' => 'id = Avatar.id' ), 

    ); 
    public $hasMany = array(
     'Favorite' => array(
      'className' => 'Favorite', 
     ), 
     'Article' => array(
      'className' => 'Article', 
     ) 
    ); 

} // end Model 

내 제 모델과 같이 설정 :

class Article extends AppModel { 
    public $validate = array(
     'title' => array(
      'rule' => 'notEmpty' 
     ), 
     'content' => array(
      'rule' => 'notEmpty' 
     ) 
    ); 

var $belongsTo = array(
    'User' => array(
     'className' => 'User', 
     'dependent' => true, 
     'foreignKey' => 'user_id'), 

    ); 

} // end Model 

내 아바타 모델은이 모델도 필요하다 (과 같이 설정 이 시점에서) :

class Avatar extends AppModel { 

var $hasmany = array(
    'User' => array(
     'className' => 'User') 
    ); 

} // end Model 

그 디 경우에 기사 컨트롤러에서 $ 사용자 = 배열 ​​('사용자', '아바타')를 넣어 뭐든지.

관계가 맞는지 확실하지 않습니다. 내 테이블 :

Articles (id, user_id...etc) 
Users(id, avatar_id...etc) 
Avatars(id, file...etc) 

편집이 :가 정확한 오류 읽기 ...

Notice (8): Undefined index: Avatar [/APP/View/Articles/index.ctp, line 35] 
include- APP/View/Articles/index.ctp, line 35 
View::_evaluate() - CORE/Cake/View/View.php, line 920 
View::_render() - CORE/Cake/View/View.php, line 883 
View::render() - CORE/Cake/View/View.php, line 475 
Controller::render() - CORE/Cake/Controller/Controller.php, line 957 
Dispatcher::_invoke() - CORE/Cake/Routing/Dispatcher.php, line 193 
Dispatcher::dispatch() - CORE/Cake/Routing/Dispatcher.php, line 161 
[main] - APP/webroot/index.php, line 92 

편집 : $ 기사의 ArticlesController.php의 요청에 따라

App::uses('AppController', 'Controller'); 
/** 
* Articles Controller 
* 
* @property Article $Article 
*/ 
class ArticlesController extends AppController { 


/** 
* index method 
* 
* @return void 
*/ 
    public function index() { 
     // $this->Article->recursive = 0; // I used this originally 
     // $this->set('articles', $this->paginate()); // I used this originally 
       $this->Article->find('all'); 
     $this->set('articles', $this->paginate()); 

    } 

디버그 또는 $ article이 User에서 중지됩니다. 아바타는 User 배열 내의 배열이어야합니다.

$article = array(
    'Article' => array(
     'id' => '11', 
     'page_id' => '2', 
     'topic_id' => '7', 
     'user_id' => '29', 
     'title' => 'Test title for article 11' 
    ), 
    'Page' => array(
     'id' => '2', 
     'category_id' => '1', 
     'title' => 'Dexter', 
    ), 
    'Topic' => array(
     'id' => '7', 
     'page_id' => '11', 
     'title' => 'Press' 
    ), 
    'User' => array(
     'password' => '*****', 
     'id' => '29', 
     'username' => 'testuser', 
     'avatar_id' => '519' 
    ) 
) 
+0

무엇이 오류입니까? –

+2

Notice를 확장하여 전체적으로 번역하십시오. 데이터가 거기에 있는지보기 위해 배열을 디버그 했습니까? 그게 보통입니다. –

+1

이것은 간단한 배열 에러 일 가능성이 높습니다 (Colby가 정확하고 foreignKey가 매우 틀리며 모델을 가지고있는 것처럼 보일 것입니다). 배열을 에코/디버그하고 그에 따라 파일을 수정하십시오. – Dave

답변

0

아바타의 belongsto에 대한 사용자 설정이 올바르게 설정되어 있지 않지만 작동한다고 표시되어 있습니까? 실제로 규칙을 사용하는 경우 foreignKey 필드가 필요하지 않습니다. 그래서 뭔가 일어나고 그것이 당신은 정말 우리가 무슨 일이 일어나고 있는지를 결정하기위한 더 많은 코드/전체 오류를 포함 할 필요가

'foreignKey' => 'avatar_id' 

해야처럼

'foreignKey' => 'id = Avatar.id' 

보이는,하지 않는 한이 있습니다.

+0

나는 같은 결과를 얻는다. 아바타는 view.ctp 사용자에게 올바르게 출력하지만, 지금 바로이 기사가 호출되기 전에 index.ctp – bowlerae

+0

debug $ article을보고 $ article [ 'User'] [ 'Avatar'] [ 'file'] 및 $ article [ 'User' ] [ 'username'] values ​​are –

+0

정확히 어떻게하는지 모르겠습니다. Cookbook에 "Debugger :: dump ($ foo);"로 디버깅하라는 메시지가 있습니다. 나는 foo를 기사 (및 기사)로 바꿨다. 어디에서 배치하거나 다른 디버거를 사용합니까? 컨트롤러와 모델 모두에 배치하려고했습니다. – bowlerae

0

기사 컨트롤러에서 recurisve = 2로 설정하면 트릭을 수행했습니다. 또한 사용자 모델에서 사용자와 아바타 간의 연관성을 조정해야했습니다 (사용자가 아바타에 속해야하고 사용자에게 많은 아바타가 있어야 함).

내 사이트에있는 다른 모든 사용자 콘텐츠 모듈과 관련된 댓글이 기사와 연결되어 있기 때문에 recursize = 2로 인해 응용 프로그램 속도가 느려질 수 있습니다.