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)
{
}
