나는 cakephp (2.4.7)로 개발 중이며 컨트롤러, 모델 등 어디서 다른 것들을 표시 할 수있는 기능을 쓰는 지 알고 싶습니다 (Buttons, Labels, ..) 보기에서.다른 모양의 레이아웃을 표시
예 : 예를 들어 사용자가 이미 게시물을 좋아하는지 ('좋아요'대신 '싫어요'표시) 확인하거나 사용자가 친구인지 확인하고 '친구 추가'버튼 대신 '친구 제거'를 표시하십시오.
나는 매우 기본적인 질문을 알고 있지만, 코드를 어디에 두어야하는지 모르겠습니다.
내가 무엇을 가지고 : 보기
$hasLiked = $this->requestAction('/userlikes/hasliked/' . $postId); // returns true/ false
if ($hasLiked) {
$this->Html->link('Dislike', array('controller' => 'userlikes', 'action' => 'dislike', $postId));
} else {
$this->Html->link('Like', array('controller' => 'userlikes', 'action' => 'like', $postId));
}
UserlikesController
public function hasliked($postId) {
if (empty($this->request->params['requested'])) {
throw new ForbiddenException();
}
return $this->Userlikes->hasliked($postId, $this->Auth->user('id'));
}
Userlike 모델
public function hasliked($postId, $userId) {
$result = $this->find('count', array('conditions' => array('post_id' => $postId, 'user_id' => $userId)));
if ($result == 0) {
return false;
} else {
return true;
}
}
하지만 내 솔루션이 매우 더러운 것 같아요, 더 좋은 방법이 있습니까? 고맙습니다.
먼저 답장을 보내 주셔서 감사합니다. 당신의 솔루션은 이미 가지고있는 것과 가깝습니다. 이러한 요청을 구현하는 일반적인 방법입니까 아니면 더 좋은 방법이 있습니까? – q0re
당신이 무엇을 필요로 하느냐에 달려 있습니다. 그래서 컨트롤러 팁을 이해할 수 없으므로 팁을 줄 수 있습니다. –
아, 당신은'$ this-> set ('hasliked') ..'을 사용했지만'userlikes/hasliked', 나는 단지 post/view에서이 함수가 필요하다. 그게 왜 내가 requestAction을 사용합니다. 이제 내가 뭘 할 수 있니? – q0re