0

/View/Layouts/default.ctp (사이트의 홈페이지 프리젠 테이션 레이아웃)에 HTML 입력 양식 (검색 창)을 포함시키고 싶습니다. 나는 다음과 같은 코드로 /View/Elements/lookup.ctp 만든 (I 사이트의 모든 페이지에서 해당 검색 창을 포함 싶어서 요소를 썼다) : 자체가 같아야합니다/View/Elements/lookup.ctp 파일이 /View/Layouts/default.ctp에 렌더링되지 않습니다 (오류가 표시됨)? 내가 어떻게 해?

<?php 
echo $this->Form->create('Search', array('action' => 'lookup', 'accept-charset' => 'utf-8')); 
echo $this->Form->input(array('type' => 'search', 'name' => 'search', 'placeholder' => 'enter search term')); 
echo $this->Form->button('Search', array('type' => 'button', 'value' => 'submit')); 
echo $this->Form->end(); 
?> 

검색 창 이 :

___________________________  ______________ 
| enter search term  | | Search  | <--- button 
|_________________________| |______________| 
    ↑ 
search bar 

/View/Layouts/default.ctp에서 생성 된 코드는 다음과 같이해야합니다 :

: 나는 라인을 포함

<form id="searchForm" method="post" action="/searches/lookup" accept-charset="utf-8"> 
    <input type="search" name="search" placeholder="enter search term" /> 
    <button type="button" name="submit" value="submit">Search</button> 
</form> 

(@Wylie을 : (요소를 내장),하지만 난 홈페이지에 갈 때, 그것은이 요소를 렌더링하지 않으며 오류가 나타납니다 /View/Layouts/default.ctp에서

<?php echo $this->element('lookup'); ?> 

예, 네가 옳아. 전체적인 오류는 아니었다. 여기에 완전한 오류가 있습니다)

#0 C:\wamp\www\lib\Cake\Model\Datasource\DboSource.php(436): PDOStatement->execute(Array) 
#1 C:\wamp\www\lib\Cake\Model\Datasource\Database\Mysql.php(307): DboSource->_execute('SHOW FULL COLUM...') 
#2 C:\wamp\www\lib\Cake\Model\Model.php(1226): Mysql->describe(Object(Search)) 
#3 C:\wamp\www\lib\Cake\View\Helper\FormHelper.php(197): Model->schema() 
#4 C:\wamp\www\lib\Cake\View\Helper\FormHelper.php(450): FormHelper->_introspectModel('Search', 'fields') 
#5 C:\wamp\www\azil\View\Elements\lookup.ctp(2): FormHelper->create('Search', Array) 
#6 C:\wamp\www\lib\Cake\View\View.php(595): include('C:\wamp\www\azi...') 
#7 C:\wamp\www\lib\Cake\View\View.php(317): View->_render('C:\wamp\www\azi...', Array) 
#8 C:\wamp\www\azil\View\Layouts\default.ctp(91): View->element('lookup') 
#9 C:\wamp\www\lib\Cake\View\View.php(595): include('C:\wamp\www\azi...') 
#10 C:\wamp\www\lib\Cake\View\View.php(411): View->_render('C:\wamp\www\azi...') 
#11 C:\wamp\www\lib\Cake\View\View.php(373): View->renderLayout('<h2>Database ta...', 'default') 
#12 C:\wamp\www\lib\Cake\Controller\Controller.php(900): View->render('error500', NULL) 
#13 C:\wamp\www\lib\Cake\Error\ExceptionRenderer.php(282): Controller->render('error500') 
#14 C:\wamp\www\lib\Cake\Error\ExceptionRenderer.php(191): ExceptionRenderer->_outputMessageSafe('error500') 
#15 [internal function]: ExceptionRenderer->_cakeError(Object(MissingTableException)) 
#16 C:\wamp\www\lib\Cake\Error\ExceptionRenderer.php(165): call_user_func_array(Array, Array) 
#17 C:\wamp\www\lib\Cake\Error\ErrorHandler.php(127): ExceptionRenderer->render() 
#18 [internal function]: ErrorHandler::handleException(Object(MissingTableException)) 
#19 {main} [<b>CORE\Cake\Error\ErrorHandler.php 

누락 된 테이블! 누락 된 테이블은 /View/Layouts/default.ctp 안에 몇 줄의 HTML 줄을 추가하기 만하면됩니다. 나는 무슨 일이 일어나고 있는지 이해하지 못한다. 도와주세요. 고맙습니다.

+1

실제 오류 메시지는 무엇입니까? 중요한 부분을 자른 것처럼 보입니다. 검색 모델이 있습니까? SearchesController가 있습니까? – Wylie

답변

0

Cake는 Model에 해당 데이터베이스 테이블이 있어야합니다. 불완전한 오류 출력을 기반으로 Cake는 데이터베이스에서 searches 테이블을 찾지 만 찾을 수 없습니다. 검색 모델 Cake에 속하는 양식이 포함 된 element을 포함하기 때문에 양식을 올바르게 표시하기위한 열 설명에 대해 데이터베이스에 쿼리합니다.

검색을 위해 별도의 컨트롤러와 모델을 갖고 싶으십니까? search은 관련 컨트롤러 (예 : PostsController)의 작업 일 수도 있습니다.

물론 여러 모델 (게시물, 페이지, 사용자)을 쿼리 할 수있는 글로벌 검색 모델이 필요한 경우 모델링이 이치에 맞을 수 있습니다. 모델에 데이터베이스 테이블이 없다는 것을 Cake에게 알릴 수 있습니다 :

public $useTable = false; 
+0

도움을 주셔서 감사합니다. 검색을 위해 별도의 모델이 필요 없으며 컨트롤러만으로 문제를 해결했습니다. – sh0ne

+0

도움이 된다니 기쁘다. ;) – mensch