CakePHP 3 View Cells
View Cells to takie mini kontrolery, które posiadają własną logikę i renderują templaty. View Cells są idealne do tworzenia komponentów strony wielokrotnego użytku, które wymagają interakcji z modelami.
namespace App\View\Cell; use Cake\View\Cell; class LoginCell extends Cell { public function display() { $this->set('user', $this->request->session()->read('Auth.User')); } }Plik templatu dla tego cella widnieje poniżej. Powinien znaleźć się w pliku src/Template/Cell/Login/display.ctp
<ul class="nav navbar-nav navbar-right"> <?php if(!empty($user)) { echo '<li class="dropdown">'; echo '<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">'.$user['username'].' <span class="caret"></span></a>'; echo '<ul class="dropdown-menu">'; echo '<li>'.$this->Html->link(__('Settings'), ['controller' => 'users','action' => 'edit', $user['id']]).'</li>'; echo '<li>'.$this->Html->link(__('Logout'), ['controller' => 'users','action' => 'logout']).'</li>'; echo '</ul>'; echo '</li>'; } else { echo '<li>'.$this->Html->link(__('Log in'), ['controller' => 'users','action' => 'login']).'</li>'; } ?> </ul>Aby wywołać cella w pliku widoki piszemy.
echo $this->cell('Login');Powyższy kod załaduje cella Login i wykona metodę display(). Można wywołać inną metodę na starcie, korzystając z poniższego kodu. Wywoła on metodę o nazwie other().
echo $this->cell('Login::other');Można również przekazywać parametry do cella.
W widoku:
echo $this->cell('Favourites::recent', ['-3 days']);Funkcja recent() w klasie cella przyjmie wtedy argument.
public function recent($since) { }