10/10/2018, 09:17

ta có thể tạo dạng như block trong CI ko

vd tôi có 1 "block" hiển thị tin tức nóng nhất ở các controller news,blog,music. và trong các controller đó có vài function view để hiển thị như news/view;news/viewdetail, blog/singer; blog/author; music/song,...
nếu như làm bình thường thì tại mỗi function của nó ta lại viết câu truy vấn dữ liệu rồi hiện ra ngoài trường hợp có nhiều quá thì viết lại rất phí. Xin hỏi có cách nào mà ta tạo dạng "block" như drupal, nukeviet ta chỉ cần viết tên block đó thì nó sẽ tự hiển thị mà ko cần mỗi lần muốn hiện ra ngoài ta lại viết lại
s.code viết 11:22 ngày 10/10/2018
Đó là cái dở của CI. Mặc dù nó vẫn để theo cách đó. Nhưng tui về phải chế biến thêm 1 vài cái nữa thì mới ngon dc.

Đúng như bạn nói. Theo chuẩn của CI thì phải viết các controllers riêng biệt. ==> có nhiều phần chung phải viết lại hoặc copy lại ==> ko nhất quán và khó bảo trì.

Bạn nên tham khảo thư viện HMVC ==> chi nhỏ site thành các module. Khi cần module nào thì chỉ cần gọi thôi. Và chỉ có 1 controller duy nhất mà thôi. Tất cả sử lý theo segment hết chứ ko sài chuẩn của nó nữa.
conan1212 viết 11:32 ngày 10/10/2018
Cái đó là do cách xây dựng chứ liên quan gì đến cái dở, hay của CI, bạn cho rằng vấn đề đó CI chưa hề nghĩ đến à, 2 người chắc hơn cả cái Lab, Team của nó chắc?
CI chỉ cung cấp Core, kiến trúc cho việc xây dựng thôi chứ không nắm tay dắt coder đi từng bước từng bước như trẻ con tập đi được. Việc tự xây dựng block cho Application base on CI là không khó.
evodanh viết 11:18 ngày 10/10/2018
CI chỉ là cái core ở mức căn bản thôi. Cái vụ block đó bạn phải viết lại thôi. Nhưng bạn tin tôi đi, CI rất dễ customize

http://codeigniter.com/forums/viewthread/64068/#315257 Bạn có thể tham khảo bài viết trên hoặc: http://codeigniter.com/wiki/Modular_Extensions_-_HMVC

HMVC giờ là 1 model mới
kiem_bo viết 11:32 ngày 10/10/2018
tôi có ý định tạo 1 lib để sử dụng lại nhưng trong lib dùng library và helper cũng như db lại ko được ? có cách nào để tạo library dùng được cái này ko
cảm ơn nha
evodanh viết 11:23 ngày 10/10/2018
Mình xũng từng bị trường hợp này, nhưng có cách giải quyết theo hướng sau: library của bạn phải extends CI_Base class, sau đó viết code giống kiểu sau (bạn có thể tham khảo library Controller.php của CI rồi bắt trước theo), trong đó class sẽ là class bạn muốn sử dụng.
$classes = array (

'config' => 'Config',
'input' => 'Input',
'benchmark' => 'Benchmark',
'uri' => 'URI',
'output' => 'Output',
'lang' => 'Language'
);
foreach ($classes as $var => $class) {
$this->$var =& load_class($class);
}
kiem_bo viết 11:17 ngày 10/10/2018
có phải viết như thế này ko
class demo extends CI_Base class
{
function demo()
{
$classes = array (

'config' => 'Config',
'input' => 'Input',
'benchmark' => 'Benchmark',
'uri' => 'URI',

;
foreach ($classes as $var => $class) {
$this->$var =& load_class($class);
}
function myfunction(){

}
}
Bài liên quan
0