2016-10-23 3 views
-4

view (index.ctp와 같은)에서 호출 할 수있는 함수를 어떻게 만들 수 있습니까?CakePHP 함수를 만들고보기에서 호출하는 방법

난 그냥 내 컨트롤러 중 하나의 기능을 썼다 :

public function getName($id) { 
    $name = $users 
     ->find() 
     ->where(['id' => $id ]) 
     ->first() 
     ->username; 
    return $name; 
} 

기능은 매개 변수로 전달 된 $ ID에 따라 사용자 이름을 반환해야합니다. 나는 내 견해에서 어떻게 기능을 호출 할 수 있는지 알고 싶다. 이 오류가 나타납니다.

"Error: Call to undefined function getName()"

+2

입니다 보기에서. 그것은 컨트롤러에서 수행되어야하며 * 뷰에 전달되어야합니다. – ceejayoz

+0

컨트롤러에이 기능을 작성했습니다. – Rockman

+1

올바르게 이해하면'index.ctp' 뷰에서'getWins()'함수를 호출하고 싶습니다. 사용중인 CakePHP 버전을 언급하십시오. 또한이 함수로 작성된 코드를 표시하십시오. –

답변

0

MVC 모델에 위배되는 것이므로 어쨌든 권장하지 않습니다.

Namespace\ControllerName::getName(1) 
당신은 정말 표정 CakePHP의 설명서를 복용 고려하고 컨트롤러에서 볼 변수를 설정하는 방법을 이해한다

http://book.cakephp.org/3.0/en/views.html#setting-view-variables

당신이 데이터를 기반으로 취득하려는 경우

다른 옵션은, 컨트롤러에 AJAX 요청을 할 것입니다 예를 들면 보기에서 사용자 작업.

1

당신이보기 여기

echo $this->cell('User::getName', [$id]); 

에서 호출 할 수있는 당신이 CakePHP의 셀 지금

//src/View/Cell/UserCell.php 
namespace App\View\Cell; 
use Cake\View\Cell; 

class UserCell extends Cell{ 

    public function getName($id) { 
     $users = TableRegistry::get('Users');// or may use $this->loadModel('Users'); 
     $name = $users->find()->where(['id' => $id ])->first()->username; 
    return $name; 
    } 
} 

를 사용할 수 있습니다 작업의 이러한 유형의 작업을 수행하는 *이 * 수행해서는 안 Official Doc

+0

'$ users'는 어디에서 왔습니까? –

+0

@ code-kobold 내 코드를 업데이트했습니다. ( – tarikul05