2014-04-24 4 views
0

학습 목적으로 아주 간단한 MVC 패턴을 만들었습니다. 데이터베이스 세부 사항에 저장됩니다컨트롤러의 객체를 PHP의보기로 올바르게 전달하는 방법은 무엇입니까?

<?php 

class Crud{ 

    private $Database; 
    private $db_table = 'products'; 

    function __construct() 
    { 
     global $Database; 
     $this->Database = $Database; 
    } 


    // READ (SELECT) 

    public function read(){ 

     $query="SELECT * FROM $this->db_table"; 

     $result= $this->Database->query($query); 

     $num_result=$result->num_rows; 


     if($num_result>0){ 
      while($rows=$result->fetch_assoc()){ 

       $this->data[]=$rows; 

       //print_r($rows);  
      } 

      return $this->data; 
     }  
    } 
} 

: 순서 뷰에서 특정 데이터베이스 테이블의 내용을 표시하는 방법을 배우고, 나는 그래서 (m_crud.php) 내 모델에서 간단한 읽기 기능을 썼다 침전물 객체뿐만 아니라 시작, init.php :

<?php 

// Connect to database 

$server = 'localhost'; 
$user = 'root'; 
$pass = 'MyPassword'; 
$db  = 'MyDatabase; 

$Database = new mysqli($server, $user, $pass, $db); 


// Error reporting 

mysqli_report(MYSQLI_REPORT_ERROR); 
ini_set('display_errors', 1); 


// Include objects 

include('app/models/m_crud.php'); 
include('app/models/m_template.php'); 


// Create Objects 

$Crud = new Crud(); // Creates an instance of the CRUD Class 


// Start session 

session_start(); 

다음과 같이 내 컨트롤러 (즉 내가 붙어 오전 일부) 같습니다

순간
<?php 
include('app/init.php'); 

$Template->load('app/views/v_members.php'); 

$obj = $Crud->read(); 

    if (! empty($obj)) 
    { 

    // Pass product data to view 
    // How do you correctly pass the object data to the view? 


    } 

, 나는 작품 내 'products' 테이블, 중 Y의 내용을 표시 할 뷰 내에서 CRUD - 객체를 생성하지만, 효과적으로 MVC 패턴을 나누기 : 어떻게

<?php include("includes/private_header.php"); ?> 

<div id="content"> 

<?php 
$obj=new Crud; 
$obj->read(); 
?> 

<table width="500" border="1" cellpadding="5"> 
    <tr> 
    <th width="16" scope="row">ID</th> 
    <td width="95">Category</td> 
    <td width="95">Name</td> 
    <td width="140">Description</td> 
    <td width="104">Price</td> 
    <td width="71">Image</td> 
    <td>action</td> 
    </tr> 

<?php 
foreach($obj->data as $val){ 
    extract($val); 

    ?> 
    <tr> 
    <td scope="row"><?php echo $id; ?></td> 
    <td><?php echo $category_id; ?></td> 
    <td><?php echo $name; ?></td> 
    <td><?php echo $description; ?></td> 
    <td><?php echo $price; ?></td> 
    <td><?php echo $image; ?></td> 
    <td><a href="edit.php?id=<?php echo $id; ?>">edit</a>|<a href="delete.php?id=<?php echo $id; ?>">Delete</a></td> 
    </tr> 
    <?php 
} 

?> 
</table> 


</div> 

<?php include("includes/private_footer.php"); ?> 

내가 할 수 보기를 정리하기 위해 컨트롤러에서보기로 CRUD 개체를 전달 하시겠습니까?

답변

0

컨트롤러의 if 블록에서보기에 에코 된 변수를 설정하십시오. "$ Template-> load ('app/views/v_members.php');"라고 가정하면 뷰를 호출하면 if 블록 뒤에 해당 뷰를 배치합니다. 그렇지 않으면 컨트롤러를 뷰 스크립트 맨 위에 포함시킬 수 있습니다.

$obj = $Crud->read(); 

if (! empty($obj)) 
{ 

foreach($obj->data as $val){ 
extract($val); 
} 


} 
//If your Template->load function is calling the view 
$Template->load('app/views/v_members.php'); 
+0

컨트롤러에 반향하는 변수를보기에 어떻게 전달합니까? –

관련 문제