-----
Phần x8. CakePHP2
– Element
Xem (clip số 14 – chickenrainshop):
Element là các đoạn mã của view được sử dụng lại ở nhiều
nơi, element còn được gọi là mini-view.
Đọc thêm về element tại đây: https://book.cakephp.org/2.0/en/views.html#elements
Ví dụ, đoạn mã phân trang ở hai view: index và latest_book có
thể viết lại dưới dạng một element, sau đó tại mỗi view sẽ gọi element.
Thư mục View\Elements là nơi chứa các element.
Ví dụ tạo một element có tên là pagination.ctp trong
View\Elements,
[pagination.ctp]
<p>
<?php
echo $this->Paginator->counter("Trang {:page}/{:pages}, hiển thị
{:current} ".$object." trong tổng số {:count} ". $object .
"."); ?> <br>
<?php
echo $this->Paginator->prev('Quay lại'); ?>
<?php
echo $this->Paginator->numbers([
'separator'
=> ' - ',
'before'
=> '| ',
'after'
=> ' |'
]);
?>
<?php
echo $this->Paginator->next('Kế tiếp'); ?>
</p>
Trong View\Writers\index.ctp sẽ gọi element pagination, để ý
là khi gọi element pagination thì phải gửi biến $object từ index.ctp qua cho
pagination.ctp, dòng này:
<?php echo $this->element('pagination', ['object' =>
'tác giả']); ?>
[index.ctp]
<div class="writers index">
<h2><?php
echo __('Các tác giả'); ?></h2>
<h4><?php
echo $this->paginator->sort('name', 'Xếp theo thứ tự ngược lại');
?></h4>
<?php
foreach($writers as $writer): ?>
<?php echo
$writer['Writer']['name'] ?> <br>
<?php
endforeach ?>
<br>
<hr>
<br>
<?php echo
$this->element('pagination', ['object' => 'tác giả']); ?>
</div>
Còn đoạn mã dưới đây là gọi element pagination trong
View\Books\latest_books.ctp
[latest_books.ctp]
<div class="books index">
<h2><?php
echo __('Sách mới'); ?></h2>
<p>
<?php
echo $this->paginator->sort('title','Sắp xếp theo tên sách'); ?>
</p>
<?php
foreach($books as $book): ?>
<?php
echo $book['Book']['title']; ?> <br>
<?php
echo $this->Html->image($book['Book']['image'], ['width' => '60px',
'height' => '80px']); ?> <br>
Giá
bán:<?php echo $this->Number->currency($book['Book']['sale_price'],'
VND',['places' => 0,'wholePosition' => 'after']); ?> <br>
<?php
foreach($book['Writer'] as $writer): ?>
<?php
echo $writer['name'].' '; ?>
<?php
endforeach; ?>
<br>
<br>
<hr>
<br>
<?php
endforeach; ?>
<?php echo
$this->element('pagination', ['object' => 'quyển sách']); ?>
</div>
-----------
Cập nhật 26/4/2017
-----------