2010-11-16 28 views
8

Tôi đang thêm các tính năng mới vào cơ sở mã hiện có. Dù sao, tính năng hiện tại tôi đang làm nên được trong MVC theo ý kiến ​​của tôi. Cơ sở mã hiện tại không phải là MVC nhưng tính năng tôi đang triển khai, tôi muốn nó là MVC. Và tôi không muốn cuộn một số MVC hiện có vào các mã hiện có.MVC tùy chỉnh, cách triển khai hàm kết xuất cho bộ điều khiển để Chế độ xem có thể truy cập các biến do Bộ điều khiển đặt

Vì vậy, sự cố của tôi là ... Tôi không biết triển khai hàm render cho lớp bộ điều khiển. Thông thường, trong MVC bạn có bộ điều khiển làm một số công cụ, đặt nó thành một biến bằng cách sử dụng hàm render, và View bây giờ có thể truy cập một cách kỳ diệu biến được đặt bởi bộ điều khiển.

Tôi không có ý tưởng làm thế nào để làm điều này khác hơn là toàn cầu, mà chỉ cảm thấy sai, tôi tiếp tục nói với bản thân mình có phải là một cách tốt hơn. Chỉnh sửa: Đó là toàn cầu phải không? > _> Các khung công tác khác làm như thế nào?

Dưới đây là một ví dụ ngớ ngẩn:

Bộ điều khiển:

class UserController extend BaseController 
{ 
public function actionIndex() 
{ 
    $User = new User; // create a instance User model 

    $User->getListofUser(); 

    $this->render('ListOfUser', 'model'=>$model); 
} 
} 

Xem:

<?php 
//I can use $ListOfUser now... 
//some for loop 
echo $ListofUser[$i]; 
?> 

Cảm ơn bạn trước!

Trả lời

19

Một ví dụ rất đơn giản:

class View { 
    function render($file, $variables = array()) { 
     extract($variables); 

     ob_start(); 
     include $file; 
     $renderedView = ob_get_clean(); 

     return $renderedView; 
    } 
} 

$view = new View(); 
echo $view->render('viewfile.php', array('foo' => 'bar')); 

Bên viewfile.php bạn sẽ có thể sử dụng biến $foo. Bất kỳ mã nào trong tệp xem sẽ có quyền truy cập vào $this (trường hợp Xem) và bất kỳ biến nào trong phạm vi bên trong hàm render. extract trích xuất nội dung của mảng thành biến cục bộ.

+0

Tôi đã thử các cách khác nhau để triển khai lớp chế độ xem này. Tôi chính xác bao gồm lớp xem này ở đâu? Tôi đã cố gắng tạo ra một thuộc tính điều khiển của một thể hiện của lớp xem và có một trong các phương pháp của bộ điều khiển làm cho một biến được sử dụng trong 'viewfile.php' nhưng nó không có vẻ làm việc. Nó maxed ra bộ đệm vì vậy tôi đã phải sửa đổi nó để include_once $ tập tin. – mythicalprogrammer

Các vấn đề liên quan